W SQL Server możesz użyć ORIGINAL_DB_NAME()
funkcja zwracająca nazwę bazy danych określoną przez użytkownika w ciągu połączenia z bazą danych.
Tej funkcji nie należy mylić z DB_NAME()
funkcja, która zwraca albo konkretną bazę danych, albo bieżącą.
Kiedy po raz pierwszy nawiązujesz połączenie z SQL Server, masz możliwość określenia początkowej bazy danych. Na przykład podczas korzystania z interfejsu wiersza poleceń, takiego jak sqlcmd , możesz użyć -d
parametr określający początkową bazę danych. Jeśli nie użyjesz tego parametru, domyślną bazą danych logowania będzie początkowa baza danych.
Po połączeniu możesz przełączyć się do innej bazy danych, ale oryginalna baza danych będzie zawsze taka sama. Innymi słowy, ORIGINAL_DB_NAME()
zawsze zwróci tę samą bazę danych przez całą sesję, nawet jeśli przełączysz się na inną bazę danych.
Przykład 1 – Podstawowe użycie
Oto podstawowy przykład.
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
Przykład 2 – Różne parametry połączenia
Ten przykład pokazuje, jak wyjście ORIGINAL_DB_NAME()
funkcja jest określona przez ciąg połączenia.
Rozważ następujące parametry połączenia:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music
Tutaj używam mssql-cli narzędzie wiersza polecenia do łączenia się z SQL Server. Interesuje nas część -d Music
. Określa to, że początkowa baza danych powinna być bazą danych Muzyka. Innymi słowy, gdy połączę się z SQL Server, moją aktualną bazą danych będzie Muzyka.
Więc po uruchomieniu tego kodu (i pomyślnym połączeniu z SQL Server), mogę uruchomić ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
+---------------------+ | Original Database | |---------------------| | Music | +---------------------+
Otwórzmy teraz inne połączenie, ale tym razem określę inną bazę danych:
mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
Teraz uruchom ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
+---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+
Przykład 3 – Przełącz bazy danych
Oto, co się stanie, jeśli przełączę się na inną bazę danych i ponownie uruchomię instrukcję:
USE Music; SELECT ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
Changed database context to 'Music'. +---------------------+ | Original Database | |---------------------| | WideWorldImporters | +---------------------+ (1 row affected)
Oryginalna baza danych pozostaje taka sama.
Oto znowu w porównaniu z DB_NAME()
funkcja:
USE Music; SELECT DB_NAME() AS [Current Database], ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
Changed database context to 'Music'. +--------------------+---------------------+ | Current Database | Original Database | |--------------------+---------------------| | Music | WideWorldImporters | +--------------------+---------------------+ (1 row affected)
Przykład 4 – Domyślna baza danych
Oto, co się stanie, jeśli nie określę jawnie bazy danych w ciągu połączenia:
mssql-cli -S localhost -U sa -P bigStrongPassword!!!
Teraz uruchom ORIGINAL_DB_NAME()
:
SELECT ORIGINAL_DB_NAME() AS [Original Database];
Wynik:
+---------------------+ | Original Database | |---------------------| | master | +---------------------+
W takim przypadku używana jest domyślna baza danych dla tego użytkownika.