In SQL Server kunt u de ORIGINAL_DB_NAME()
. gebruiken functie om de databasenaam te retourneren die door de gebruiker is opgegeven in de databaseverbindingsreeks.
Deze functie moet niet worden verward met de DB_NAME()
functie, die een specifieke database of de huidige retourneert.
Wanneer u voor het eerst verbinding maakt met SQL Server, heeft u de mogelijkheid om de initiële database op te geven. Als u bijvoorbeeld een opdrachtregelinterface gebruikt, zoals sqlcmd , kunt u de -d
. gebruiken parameter om de initiële database op te geven. Als u deze parameter niet gebruikt, is de standaarddatabase van uw login de initiële database.
Zodra u verbinding heeft gemaakt, kunt u overschakelen naar een andere database, maar uw oorspronkelijke database blijft altijd dezelfde. Met andere woorden, ORIGINAL_DB_NAME()
zal tijdens uw sessie altijd dezelfde database retourneren, zelfs als u overschakelt naar een andere database.
Voorbeeld 1 – Basisgebruik
Hier is een eenvoudig voorbeeld.
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
Voorbeeld 2 – Verschillende verbindingsreeksen
Dit voorbeeld laat zien hoe de uitvoer van de ORIGINAL_DB_NAME()
functie wordt bepaald door de verbindingsreeks.
Houd rekening met de volgende verbindingsreeks:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music
Hier gebruik ik de mssql-cli opdrachtregelprogramma om verbinding te maken met SQL Server. Het onderdeel waarin we geïnteresseerd zijn is -d Music
. Dit specificeert dat de initiële database de Music-database moet zijn. Met andere woorden, als ik eenmaal verbinding heb gemaakt met SQL Server, is mijn huidige database Muziek.
Dus na het uitvoeren van die code (en met succes verbinding maken met SQL Server), kan ik ORIGINAL_DB_NAME()
uitvoeren :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
+---------------------+ | Original Database | |---------------------| | Music | +---------------------+
Laten we nu een andere verbinding openen, maar deze keer zal ik een andere database specificeren:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Voer nu ORIGINAL_DB_NAME()
. uit :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
+---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+
Voorbeeld 3 – Van database wisselen
Dit is wat er gebeurt als ik naar een andere database overschakel en de instructie opnieuw uitvoer:
USE Music; SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
Changed database context to 'Music'. +---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+ (1 row affected)
De originele database blijft hetzelfde.
Hier is het weer in vergelijking met de DB_NAME()
functie:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
Changed database context to 'Music'. +--------------------+---------------------+ | Current Database | Original Database | |--------------------+---------------------| | Music | WideWorldImporters | +--------------------+---------------------+ (1 row affected)
Voorbeeld 4 – Standaarddatabase
Dit is wat er gebeurt als ik niet expliciet een database specificeer in de verbindingsreeks:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Voer nu ORIGINAL_DB_NAME()
. uit :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Resultaat:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
In dit geval wordt de standaarddatabase voor die gebruiker gebruikt.