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.