I SQL Server kan du använda ORIGINAL_DB_NAME()
funktion för att returnera databasnamnet som anges av användaren i databasanslutningssträngen.
Denna funktion ska inte förväxlas med DB_NAME()
funktion, som returnerar antingen en specifik databas eller den aktuella.
När du först gör en anslutning till SQL Server har du möjlighet att ange den ursprungliga databasen. Till exempel när du använder ett kommandoradsgränssnitt som sqlcmd , kan du använda -d
parameter för att ange den ursprungliga databasen. Om du inte använder den här parametern kommer din inloggnings standarddatabas att vara den ursprungliga databasen.
När du väl har anslutit kan du byta till en annan databas, men din ursprungliga databas kommer alltid att vara densamma. Med andra ord, ORIGINAL_DB_NAME()
kommer alltid att returnera samma databas under hela din session, även om du byter till en annan databas.
Exempel 1 – Grundläggande användning
Här är ett grundläggande exempel.
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
Exempel 2 – Olika anslutningssträngar
Det här exemplet visar hur utdata från ORIGINAL_DB_NAME()
funktionen bestäms av anslutningssträngen.
Tänk på följande anslutningssträng:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music
Här använder jag mssql-cli kommandoradsverktyg för att ansluta till SQL Server. Delen vi är intresserade av är -d Music
. Detta anger att den ursprungliga databasen ska vara musikdatabasen. Med andra ord, när jag väl har anslutit till SQL Server kommer min nuvarande databas att vara Musik.
Så efter att ha kört den koden (och lyckats ansluta till SQL Server) kan jag köra ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
+---------------------+ | Original Database | |---------------------| | Music | +---------------------+
Nu, låt oss öppna en annan anslutning, men den här gången ska jag specificera en annan databas:
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 | +---------------------+
Exempel 3 – Byt databas
Så här händer om jag byter till en annan databas och kör satsen igen:
USE Music; SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultat:
Changed database context to 'Music'. +---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+ (1 row affected)
Den ursprungliga databasen förblir densamma.
Här är den igen jämfört 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)
Exempel 4 – Standarddatabas
Så här händer om jag inte uttryckligen anger en databas i anslutningssträngen:
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 det här fallet används standarddatabasen för den användaren.