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

Utilisez DB_ID() pour renvoyer l'ID d'une base de données dans SQL Server

Dans SQL Server, vous pouvez utiliser le DB_ID() fonction pour renvoyer l'ID de la base de données actuelle ou d'une autre base de données spécifiée.

La façon dont cela fonctionne est que vous transmettez le nom de la base de données en tant qu'argument, puis la fonction renverra l'ID de cette base de données. Si vous ne transmettez pas de nom, il renverra l'ID de la base de données actuelle.

Exemple 1 - Renvoyer la base de données actuelle

Voici un exemple de base pour montrer comment renvoyer le nom de la base de données actuelle.

SELECT DB_ID() AS [Current Database];

Résultat :

+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+

Dans ce cas, la base de données actuelle a un ID de 6.

Voici un autre exemple qui le démontre davantage, en changeant de base de données.

USE Music;
SELECT DB_ID() AS [Current Database];

USE EMS;
SELECT DB_ID() AS [Current Database];

USE WideWorldImportersDW;
SELECT DB_ID() AS [Current Database];

Résultat :

Changed database context to 'Music'.
+--------------------+
| Current Database   |
|--------------------|
| 5                  |
+--------------------+
(1 row affected)
Changed database context to 'EMS'.
+--------------------+
| Current Database   |
|--------------------|
| 14                 |
+--------------------+
(1 row affected)
Changed database context to 'WideWorldImportersDW'.
+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+
(1 row affected)

Exemple 2 - Renvoyer une base de données spécifique

Voici un exemple de retour d'une base de données spécifique. Cela se fait en passant le nom de la base de données.

SELECT DB_ID('Music') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 5        |
+----------+

En savoir plus :

SELECT 
  DB_ID('master') AS [master],
  DB_ID('tempdb') AS [tempdb],
  DB_ID('model') AS [model],
  DB_ID('msdb') AS [msdb],
  DB_ID('Music') AS [Music],
  DB_ID('WideWorldImportersDW') AS ['WideWorldImportersDW'];

Résultat :

+----------+----------+---------+--------+---------+--------------------------+
| master   | tempdb   | model   | msdb   | Music   | 'WideWorldImportersDW'   |
|----------+----------+---------+--------+---------+--------------------------|
| 1        | 2        | 3       | 4      | 5       | 6                        |
+----------+----------+---------+--------+---------+--------------------------+

Exemple 3 - Une requête de base de données

Voici un exemple où DB_ID() pourrait être utile.

USE WideWorldImportersDW;
SELECT
  name AS [Foreign Key],
  OBJECT_NAME(parent_object_id, DB_ID('Music')) AS [Parent Object Name],
  OBJECT_NAME(referenced_object_id, DB_ID('Music')) AS [Referenced Object Name]
FROM Music.sys.foreign_keys
WHERE name = 'FK_Artists_Country';

Résultat :

Changed database context to 'WideWorldImportersDW'.
+--------------------+----------------------+--------------------------+
| Foreign Key        | Parent Object Name   | Referenced Object Name   |
|--------------------+----------------------+--------------------------|
| FK_Artists_Country | Artists              | Country                  |
+--------------------+----------------------+--------------------------+
(1 row affected)

Dans cet exemple, la base de données actuelle est WideWorldImportersDW, mais je veux des informations sur une clé étrangère dans la base de données Music. Le OBJECT_NAME() La fonction renvoie le nom de l'objet en fonction de son ID, mais si l'objet se trouve dans une autre base de données, cela me permet également de spécifier l'ID de la base de données. Cependant, dans ce cas, je ne connais que le nom de la base de données. Pas de problème cependant, car je peux utiliser DB_ID() pour renvoyer l'ID basé sur le nom.