sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje ORIGINAL_DB_NAME() na serveru SQL Server

V SQL Server můžete použít ORIGINAL_DB_NAME() funkce, která vrátí název databáze zadaný uživatelem v řetězci připojení k databázi.

Tuto funkci nezaměňujte s DB_NAME() funkce, která vrací buď konkrétní databázi, nebo aktuální.

Při prvním připojení k serveru SQL máte možnost zadat počáteční databázi. Například při použití rozhraní příkazového řádku, jako je sqlcmd , můžete použít -d parametr k určení počáteční databáze. Pokud tento parametr nepoužijete, výchozí databází vašeho přihlášení bude výchozí databáze.

Jakmile se připojíte, můžete přepnout na jinou databázi, ale vaše původní databáze bude vždy stejná. Jinými slovy, ORIGINAL_DB_NAME() vždy vrátí stejnou databázi během vaší relace, i když přepnete na jinou databázi.

Příklad 1 – Základní použití

Zde je základní příklad.

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

+---------------------+
| Original Database   |
|---------------------|
| master              |
+---------------------+

Příklad 2 – Různé spojovací řetězce

Tento příklad ukazuje, jak je výstup ORIGINAL_DB_NAME() funkce je určena připojovacím řetězcem.

Zvažte následující připojovací řetězec:

mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d Music

Zde používám mssql-cli nástroj příkazového řádku pro připojení k serveru SQL Server. Část, která nás zajímá, je -d Music . To určuje, že výchozí databází by měla být databáze Hudba. Jinými slovy, jakmile se připojím k SQL Serveru, moje aktuální databáze bude Music.

Takže po spuštění tohoto kódu (a úspěšném připojení k serveru SQL Server) mohu spustit ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

+---------------------+
| Original Database   |
|---------------------|
| Music               |
+---------------------+

Nyní otevřeme další připojení, ale tentokrát uvedu jinou databázi:

mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters

Nyní spusťte ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

+---------------------+
| Original Database   |
|---------------------|
| WideWorldImporters  |
+---------------------+

Příklad 3 – Přepínání databází

Když přepnu na jinou databázi a znovu spustím příkaz, stane se toto:

USE Music;
SELECT ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

Changed database context to 'Music'.
+---------------------+
| Original Database   |
|---------------------|
| WideWorldImporters  |
+---------------------+
(1 row affected)

Původní databáze zůstává stejná.

Tady je to znovu ve srovnání s DB_NAME() funkce:

USE Music;
SELECT 
  DB_NAME() AS [Current Database],
  ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

Changed database context to 'Music'.
+--------------------+---------------------+
| Current Database   | Original Database   |
|--------------------+---------------------|
| Music              | WideWorldImporters  |
+--------------------+---------------------+
(1 row affected)

Příklad 4 – Výchozí databáze

Co se stane, pokud v připojovacím řetězci explicitně neurčím databázi:

mssql-cli -S localhost -U sa -P bigStrongPassword!!!

Nyní spusťte ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Výsledek:

+---------------------+
| Original Database   |
|---------------------|
| master              |
+---------------------+

V tomto případě se použije výchozí databáze pro daného uživatele.


  1. Jak používat klauzuli Where v příkazu Select v SQL Server - SQL Server / Výukový program TSQL, část 109

  2. Odstraňte duplicitní řádky v tabulce

  3. Kdy Oracle indexuje hodnoty null sloupců?

  4. Uložená procedura pro získání informací o tabulkách databáze