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

Utilizzare DB_ID() per restituire l'ID di un database in SQL Server

In SQL Server puoi utilizzare DB_ID() funzione per restituire l'ID del database corrente o un altro database specificato.

Il modo in cui funziona è passare il nome del database come argomento e quindi la funzione restituirà l'ID di quel database. Se non passi un nome, restituirà l'ID del database corrente.

Esempio 1:restituire il database corrente

Ecco un esempio di base per dimostrare come restituire il nome del database corrente.

SELECT DB_ID() AS [Current Database];

Risultato:

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

In questo caso, il database corrente ha un ID di 6.

Ecco un altro esempio che lo dimostra ulteriormente, cambiando database.

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

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

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

Risultato:

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)

Esempio 2:restituire un database specifico

Ecco un esempio di restituzione di un database specifico. Questo viene fatto passando il nome del database.

SELECT DB_ID('Music') AS Result;

Risultato:

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

Ecco di più:

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'];

Risultato:

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

Esempio 3:una query al database

Ecco un esempio di dove DB_ID() potrebbe tornare 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';

Risultato:

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

In questo esempio, il database corrente è WideWorldImportersDW, ma desidero informazioni su una chiave esterna nel database Music. Il OBJECT_NAME() La funzione restituisce il nome dell'oggetto in base al suo ID, ma se l'oggetto si trova in un database diverso, mi consente anche di specificare l'ID del database. Tuttavia, in questo caso conosco solo il nome del database. Non è un problema però, perché posso usare DB_ID() per restituire l'ID in base al nome.