I SQL Server kan du bruge ORIGINAL_DB_NAME()
funktion til at returnere databasenavnet angivet af brugeren i databaseforbindelsesstrengen.
Denne funktion må ikke forveksles med DB_NAME()
funktion, som returnerer enten en bestemt database eller den aktuelle.
Når du første gang opretter forbindelse til SQL Server, har du mulighed for at angive den oprindelige database. For eksempel, når du bruger en kommandolinjegrænseflade såsom sqlcmd , kan du bruge -d
parameter for at angive den oprindelige database. Hvis du ikke bruger denne parameter, vil dit logins standarddatabase være den oprindelige database.
Når du har oprettet forbindelse, kan du skifte til en anden database, men din originale database vil altid være den samme. Med andre ord, ORIGINAL_DB_NAME()
vil altid returnere den samme database under hele din session, selvom du skifter til en anden database.
Eksempel 1 – Grundlæggende brug
Her er et grundlæggende eksempel.
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
Eksempel 2 – Forskellige forbindelsesstrenge
Dette eksempel viser, hvordan outputtet af ORIGINAL_DB_NAME()
funktion bestemmes af forbindelsesstrengen.
Overvej følgende forbindelsesstreng:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music
Her bruger jeg mssql-cli kommandolinjeværktøj til at oprette forbindelse til SQL Server. Den del, vi er interesseret i, er -d Music
. Dette specificerer, at den oprindelige database skal være musikdatabasen. Med andre ord, når jeg har oprettet forbindelse til SQL Server, vil min nuværende database være Musik.
Så efter at have kørt den kode (og oprettet forbindelse til SQL Server), kan jeg køre ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | Music | +---------------------+
Lad os nu åbne en anden forbindelse, men denne gang vil jeg angive en anden database:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Kør nu ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+
Eksempel 3 – Skift databaser
Her er hvad der sker, hvis jeg skifter til en anden database og kører sætningen igen:
USE Music; SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
Changed database context to 'Music'. +---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+ (1 row affected)
Den originale database forbliver den samme.
Her er den igen sammenlignet med DB_NAME()
funktion:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
Changed database context to 'Music'. +--------------------+---------------------+ | Current Database | Original Database | |--------------------+---------------------| | Music | WideWorldImporters | +--------------------+---------------------+ (1 row affected)
Eksempel 4 – Standarddatabase
Her er, hvad der sker, hvis jeg ikke udtrykkeligt angiver en database i forbindelsesstrengen:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Kør nu ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
I dette tilfælde bruges standarddatabasen for den bruger.