Две от функциите за метаданни, налични в SQL Server, включват DB_NAME()
и ORIGINAL_DB_NAME()
. И двете функции са сходни по това, че връщат името на база данни. Но и те са различни. Определено не искате да бъркате двете, тъй като те служат за различни цели.
Накратко, всяка функция работи по следния начин:
DB_NAME()
връща името на определена база данни. Ако не посочите изрично база данни, тя връща текущата база данни.ORIGINAL_DB_NAME()
връща името на базата данни, посочено от потребителя в низа за връзка с базата данни.
Пример 1 – Първоначално свързване
Помислете за следния низ за връзка:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Това е низът за връзка, който предоставих, когато използвах mssql-cli инструмент за команден ред за свързване към SQL Server.
Този низ за връзка включва -d WideWorldImporters
, което означава, че базата данни WideWorldImporters ще бъде първоначалната база данни. След като се свържа със SQL Server, текущата ми база данни ще бъде WideWorldImporters.
Ето какво получавам, когато стартирам и двете функции, след като вляза с горния низ за връзка:
SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Резултат:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | WideWorldImporters | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
Пример 2 – Превключване на бази данни
Ето какво се случва, ако превключя към друга база данни и изпълня изявлението отново:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Резултат:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | Music | WideWorldImporters | MyDB | +--------------------+---------------------+--------------------+
Текущата база данни се променя, но оригиналната база данни остава същата. Третата колона също остава същата, защото посочих същия идентификатор на базата данни (5
) при извикване на DB_NAME()
.
Пример 3 – База данни по подразбиране
Ето какво се случва, ако не посоча изрично база данни в низа за връзка:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Сега стартирайте ORIGINAL_DB_NAME()
:
SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database], DB_NAME(5) AS [Another Database];
Резултат:
+--------------------+---------------------+--------------------+ | Current Database | Original Database | Another Database | |--------------------+---------------------+--------------------| | master | master | MyDB | +--------------------+---------------------+--------------------+
Използва се базата данни по подразбиране за този потребител, която в този случай е главната база данни.