sql >> Base de Datos >  >> RDS >> Sqlserver

Use DB_ID () para devolver la ID de una base de datos en SQL Server

En SQL Server, puede usar el DB_ID() función para devolver el ID de la base de datos actual u otra base de datos especificada.

La forma en que funciona es que pasa el nombre de la base de datos como argumento y luego la función devolverá la ID de esa base de datos. Si no pasa un nombre, devolverá el ID de la base de datos actual.

Ejemplo 1:devolver la base de datos actual

Aquí hay un ejemplo básico para demostrar cómo devolver el nombre de la base de datos actual.

SELECT DB_ID() AS [Current Database];

Resultado:

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

En este caso, la base de datos actual tiene un ID de 6.

Aquí hay otro ejemplo que lo demuestra aún más, al cambiar de base de datos.

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)

Ejemplo 2:devolver una base de datos específica

Aquí hay un ejemplo de cómo devolver una base de datos específica. Esto se hace pasando el nombre de la base de datos.

SELECT DB_ID('Music') AS Result;

Resultado:

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

Aquí hay más:

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                        |
+----------+----------+---------+--------+---------+--------------------------+

Ejemplo 3:una consulta de base de datos

Aquí hay un ejemplo de donde DB_ID() podría ser útil.

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)

En este ejemplo, la base de datos actual es WideWorldImportersDW, pero quiero información sobre una clave externa en la base de datos de Música. El OBJECT_NAME() La función devuelve el nombre del objeto en función de su ID, pero si el objeto está en una base de datos diferente, también me permite especificar el ID de la base de datos. Sin embargo, en este caso solo conozco el nombre de la base de datos. Sin embargo, no hay problema, porque puedo usar DB_ID() para devolver el ID basado en el nombre.