Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonctionnement de ORIGINAL_DB_NAME() dans SQL Server

Dans SQL Server, vous pouvez utiliser le ORIGINAL_DB_NAME() pour renvoyer le nom de la base de données spécifié par l'utilisateur dans la chaîne de connexion à la base de données.

Cette fonction ne doit pas être confondue avec le DB_NAME() fonction, qui renvoie soit une base de données spécifique, soit celle en cours.

Lorsque vous établissez une première connexion à SQL Server, vous avez la possibilité de spécifier la base de données initiale. Par exemple, lors de l'utilisation d'une interface de ligne de commande telle que sqlcmd , vous pouvez utiliser le -d paramètre pour spécifier la base de données initiale. Si vous n'utilisez pas ce paramètre, la base de données par défaut de votre connexion sera la base de données initiale.

Une fois connecté, vous pouvez basculer vers une autre base de données, mais votre base de données d'origine sera toujours la même. En d'autres termes, ORIGINAL_DB_NAME() renverra toujours la même base de données tout au long de votre session, même si vous passez à une autre base de données.

Exemple 1 - Utilisation de base

Voici un exemple de base.

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Résultat :

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

Exemple 2 - Différentes chaînes de connexion

Cet exemple montre comment la sortie de ORIGINAL_DB_NAME() fonction est déterminée par la chaîne de connexion.

Considérez la chaîne de connexion suivante :

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

Ici, j'utilise le mssql-cli outil de ligne de commande pour se connecter à SQL Server. La partie qui nous intéresse est -d Music . Ceci spécifie que la base de données initiale doit être la base de données Musique. En d'autres termes, une fois connecté à SQL Server, ma base de données actuelle sera Musique.

Ainsi, après avoir exécuté ce code (et réussi à me connecter à SQL Server), je peux exécuter ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Résultat :

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

Maintenant, ouvrons une autre connexion, mais cette fois je vais spécifier une base de données différente :

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

Exécutez maintenant ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Résultat :

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

Exemple 3 – Changer de base de données

Voici ce qui se passe si je passe à une autre base de données et exécute à nouveau l'instruction :

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

Résultat :

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

La base de données d'origine reste la même.

Le voici à nouveau par rapport au DB_NAME() fonction :

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

Résultat :

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

Exemple 4 - Base de données par défaut

Voici ce qui se passe si je ne spécifie pas explicitement une base de données dans la chaîne de connexion :

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

Exécutez maintenant ORIGINAL_DB_NAME() :

SELECT ORIGINAL_DB_NAME() AS [Original Database];

Résultat :

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

Dans ce cas, la base de données par défaut de cet utilisateur est utilisée.