sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer ORIGINAL_DB_NAME() i SQL Server

I SQL Server kan du bruge ORIGINAL_DB_NAME() funktion til at returnere databasenavnet angivet af brugeren i databaseforbindelsesstrengen.

Denne funktion må ikke forveksles med DB_NAME() funktion, som returnerer enten en bestemt database eller den aktuelle.

Når du første gang opretter forbindelse til SQL Server, har du mulighed for at angive den oprindelige database. For eksempel, når du bruger en kommandolinjegrænseflade såsom sqlcmd , kan du bruge -d parameter for at angive den oprindelige database. Hvis du ikke bruger denne parameter, vil dit logins standarddatabase være den oprindelige database.

Når du har oprettet forbindelse, kan du skifte til en anden database, men din originale database vil altid være den samme. Med andre ord, ORIGINAL_DB_NAME() vil altid returnere den samme database under hele din session, selvom du skifter til en anden database.

Eksempel 1 – Grundlæggende brug

Her er et grundlæggende eksempel.

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultat:

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

Eksempel 2 – Forskellige forbindelsesstrenge

Dette eksempel viser, hvordan outputtet af ORIGINAL_DB_NAME() funktion bestemmes af forbindelsesstrengen.

Overvej følgende forbindelsesstreng:

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

Her bruger jeg mssql-cli kommandolinjeværktøj til at oprette forbindelse til SQL Server. Den del, vi er interesseret i, er -d Music . Dette specificerer, at den oprindelige database skal være musikdatabasen. Med andre ord, når jeg har oprettet forbindelse til SQL Server, vil min nuværende database være Musik.

Så efter at have kørt den kode (og oprettet forbindelse til SQL Server), kan jeg køre ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultat:

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

Lad os nu åbne en anden forbindelse, men denne gang vil jeg angive en anden database:

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

Kør nu ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultat:

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

Eksempel 3 – Skift databaser

Her er hvad der sker, hvis jeg skifter til en anden database og kører sætningen igen:

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

Resultat:

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

Den originale database forbliver den samme.

Her er den igen sammenlignet med DB_NAME() funktion:

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

Resultat:

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

Eksempel 4 – Standarddatabase

Her er, hvad der sker, hvis jeg ikke udtrykkeligt angiver en database i forbindelsesstrengen:

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

Kør nu ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultat:

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

I dette tilfælde bruges standarddatabasen for den bruger.


  1. Få det samlede antal rækker, når du bruger LIMIT?

  2. Kontroller parametertypen for en partitionsfunktion i SQL Server (T-SQL)

  3. Hvordan vi bruger databaser i vores hverdag

  4. Sådan bruger du Virtual Index i Oracle-databasen