sql >> Database >  >> RDS >> Sqlserver

Hoe ORIGINAL_DB_NAME() werkt in SQL Server

In SQL Server kunt u de ORIGINAL_DB_NAME() . gebruiken functie om de databasenaam te retourneren die door de gebruiker is opgegeven in de databaseverbindingsreeks.

Deze functie moet niet worden verward met de DB_NAME() functie, die een specifieke database of de huidige retourneert.

Wanneer u voor het eerst verbinding maakt met SQL Server, heeft u de mogelijkheid om de initiële database op te geven. Als u bijvoorbeeld een opdrachtregelinterface gebruikt, zoals sqlcmd , kunt u de -d . gebruiken parameter om de initiële database op te geven. Als u deze parameter niet gebruikt, is de standaarddatabase van uw login de initiële database.

Zodra u verbinding heeft gemaakt, kunt u overschakelen naar een andere database, maar uw oorspronkelijke database blijft altijd dezelfde. Met andere woorden, ORIGINAL_DB_NAME() zal tijdens uw sessie altijd dezelfde database retourneren, zelfs als u overschakelt naar een andere database.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig voorbeeld.

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultaat:

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

Voorbeeld 2 – Verschillende verbindingsreeksen

Dit voorbeeld laat zien hoe de uitvoer van de ORIGINAL_DB_NAME() functie wordt bepaald door de verbindingsreeks.

Houd rekening met de volgende verbindingsreeks:

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

Hier gebruik ik de mssql-cli opdrachtregelprogramma om verbinding te maken met SQL Server. Het onderdeel waarin we geïnteresseerd zijn is -d Music . Dit specificeert dat de initiële database de Music-database moet zijn. Met andere woorden, als ik eenmaal verbinding heb gemaakt met SQL Server, is mijn huidige database Muziek.

Dus na het uitvoeren van die code (en met succes verbinding maken met SQL Server), kan ik ORIGINAL_DB_NAME() uitvoeren :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultaat:

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

Laten we nu een andere verbinding openen, maar deze keer zal ik een andere database specificeren:

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

Voer nu ORIGINAL_DB_NAME() . uit :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultaat:

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

Voorbeeld 3 – Van database wisselen

Dit is wat er gebeurt als ik naar een andere database overschakel en de instructie opnieuw uitvoer:

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

Resultaat:

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

De originele database blijft hetzelfde.

Hier is het weer in vergelijking met de DB_NAME() functie:

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

Resultaat:

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

Voorbeeld 4 – Standaarddatabase

Dit is wat er gebeurt als ik niet expliciet een database specificeer in de verbindingsreeks:

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

Voer nu ORIGINAL_DB_NAME() . uit :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Resultaat:

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

In dit geval wordt de standaarddatabase voor die gebruiker gebruikt.


  1. Sequentiële doorvoersnelheden en feeds

  2. Snellere manier om via script in Oracle in te voegen?

  3. SQL Server Rebuild Index Query

  4. Hoe de kolommen opnieuw te definiëren die worden geretourneerd door een opgeslagen procedure in SQL Server