Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Use DB_ID() para retornar o ID de um banco de dados no SQL Server


No SQL Server, você pode usar o DB_ID() função para retornar o ID do banco de dados atual ou outro banco de dados especificado.

A forma como funciona é, você passa o nome do banco de dados como argumento, e então a função retornará o ID desse banco de dados. Se você não passar um nome, ele retornará o ID do banco de dados atual.


Exemplo 1 – Retornar o banco de dados atual


Aqui está um exemplo básico para demonstrar como retornar o nome do banco de dados atual.
SELECT DB_ID() AS [Current Database];

Resultado:
+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+

Nesse caso, o banco de dados atual tem um ID de 6.

Aqui está outro exemplo que demonstra isso ainda mais, alternando bancos de dados.
USE Music;
SELECT DB_ID() AS [Current Database];

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

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

Resultado:
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)

Exemplo 2 – Retornar um banco de dados específico


Aqui está um exemplo de retorno de um banco de dados específico. Isso é feito passando o nome do banco de dados.
SELECT DB_ID('Music') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 5        |
+----------+

Aqui está mais:
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'];

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

Exemplo 3 – Uma consulta de banco de dados


Aqui está um exemplo de onde DB_ID() poderia vir a calhar.
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';

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

Neste exemplo, o banco de dados atual é WideWorldImportersDW, mas quero informações sobre uma chave estrangeira no banco de dados Música. O OBJECT_NAME() A função retorna o nome do objeto com base em seu ID, mas se o objeto estiver em um banco de dados diferente, ela também me permite especificar o ID do banco de dados. No entanto, neste caso eu só sei o nome do banco de dados. Não é um problema, porque eu posso usar DB_ID() para retornar o ID com base no nome.