Twee van de metadatafuncties die beschikbaar zijn in SQL Server omvatten DB_NAME()
en ORIGINAL_DB_NAME()
. Beide functies zijn vergelijkbaar in die zin dat ze de naam van een database retourneren. Maar ze zijn ook anders. Je wilt de twee zeker niet met elkaar verwarren, omdat ze verschillende doelen dienen.
In een notendop werkt elke functie als volgt:
DB_NAME()
retourneert de naam van een opgegeven database. Als u niet expliciet een database opgeeft, wordt de huidige database geretourneerd.ORIGINAL_DB_NAME()
geeft de databasenaam terug die door de gebruiker is opgegeven in de databaseverbindingsreeks.
Voorbeeld 1 – Eerste verbinding
Houd rekening met de volgende verbindingsreeks:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Dit is de verbindingsreeks die ik heb opgegeven bij het gebruik van de mssql-cli opdrachtregelprogramma om verbinding te maken met SQL Server.
Deze verbindingsreeks bevat -d WideWorldImporters
, wat betekent dat de WideWorldImporters-database de eerste database zal zijn. Zodra ik verbinding heb met SQL Server, is mijn huidige database WideWorldImporters.
Dit is wat ik krijg als ik beide functies uitvoer nadat ik me heb aangemeld met de bovenstaande verbindingsreeks:
SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Resultaat:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | WideWorldImporters | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
Voorbeeld 2 – Van database wisselen
Dit is wat er gebeurt als ik naar een andere database overschakel en de instructie opnieuw uitvoer:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Resultaat:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | Music | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
De huidige database verandert, maar de originele database blijft hetzelfde. De derde kolom blijft ook hetzelfde omdat ik dezelfde database-ID heb opgegeven (5
) bij het aanroepen van DB_NAME()
.
Voorbeeld 3 – 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 DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Resultaat:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | master | master | MyDB | +--------------------+---------------------+--------------------+
De standaarddatabase voor die gebruiker wordt gebruikt, in dit geval de hoofddatabase.