In SQL Server können Sie den ORIGINAL_DB_NAME()
verwenden Funktion, um den Datenbanknamen zurückzugeben, der vom Benutzer in der Datenbankverbindungszeichenfolge angegeben wurde.
Diese Funktion ist nicht mit DB_NAME()
zu verwechseln Funktion, die entweder eine bestimmte Datenbank oder die aktuelle zurückgibt.
Wenn Sie zum ersten Mal eine Verbindung zu SQL Server herstellen, haben Sie die Möglichkeit, die Ausgangsdatenbank anzugeben. Beispielsweise bei Verwendung einer Befehlszeilenschnittstelle wie sqlcmd , können Sie das -d
verwenden -Parameter, um die anfängliche Datenbank anzugeben. Wenn Sie diesen Parameter nicht verwenden, ist die Standarddatenbank Ihres Logins die anfängliche Datenbank.
Sobald Sie eine Verbindung hergestellt haben, können Sie zu einer anderen Datenbank wechseln, aber Ihre ursprüngliche Datenbank bleibt immer dieselbe. Mit anderen Worten, ORIGINAL_DB_NAME()
gibt während Ihrer gesamten Sitzung immer dieselbe Datenbank zurück, auch wenn Sie zu einer anderen Datenbank wechseln.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein einfaches Beispiel.
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
Beispiel 2 – Unterschiedliche Verbindungszeichenfolgen
Dieses Beispiel zeigt, wie die Ausgabe von ORIGINAL_DB_NAME()
Die Funktion wird durch die Verbindungszeichenfolge bestimmt.
Betrachten Sie die folgende Verbindungszeichenfolge:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music
Hier verwende ich die mssql-cli Befehlszeilentool zum Herstellen einer Verbindung mit SQL Server. Der Teil, an dem wir interessiert sind, ist -d Music
. Dies gibt an, dass die anfängliche Datenbank die Musikdatenbank sein sollte. Mit anderen Worten, sobald ich mich mit SQL Server verbunden habe, ist meine aktuelle Datenbank Musik.
Nachdem ich diesen Code ausgeführt habe (und erfolgreich eine Verbindung zu SQL Server hergestellt habe), kann ich ORIGINAL_DB_NAME()
ausführen :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
+---------------------+ | Original Database | |---------------------| | Music | +---------------------+
Lassen Sie uns jetzt eine andere Verbindung öffnen, aber diesmal gebe ich eine andere Datenbank an:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Führen Sie nun ORIGINAL_DB_NAME()
aus :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
+---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+
Beispiel 3 – Datenbank wechseln
Folgendes passiert, wenn ich zu einer anderen Datenbank wechsle und die Anweisung erneut ausführe:
USE Music; SELECT ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
Changed database context to 'Music'. +---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+ (1 row affected)
Die ursprüngliche Datenbank bleibt gleich.
Hier nochmal im Vergleich mit DB_NAME()
Funktion:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
Changed database context to 'Music'. +--------------------+---------------------+ | Current Database | Original Database | |--------------------+---------------------| | Music | WideWorldImporters | +--------------------+---------------------+ (1 row affected)
Beispiel 4 – Standarddatenbank
Folgendes passiert, wenn ich in der Verbindungszeichenfolge nicht explizit eine Datenbank angebe:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Führen Sie nun ORIGINAL_DB_NAME()
aus :
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Ergebnis:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
In diesem Fall wird die Standarddatenbank für diesen Benutzer verwendet.