Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak ORIGINAL_DB_NAME() działa w SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Musisz zadeklarować zmienną @myvariable error za pomocą sparametryzowanego zapytania ADO

  2. Czy MS SQL Server między obejmuje granice zakresu?

  3. Obejście dla DATEDIFF() Ignorowanie SET DATEFIRST w SQL Server (przykład T-SQL)

  4. Zwróć podstawowy typ danych z wartości wariantu SQL_w SQL Server

  5. SQL Server JEŚLI NIE ISTNIEJE Użycie?