DB_ID (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Esta función devuelve el número de identificación de base de datos de una base de datos especificada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DB_ID ( [ 'database_name' ] )   

Argumentos

'database_name'
El nombre de la base de datos cuyo número de identificación de base de datos devolverá DB_ID. Si la llamada a DB_ID omite database_name, DB_ID devuelve el identificador de la base de datos actual.

Tipos de valores devueltos

int

Observaciones

DB_ID solo se puede usar para devolver el identificador de la base de datos actual de Azure SQL Database. Se devuelve NULL si el nombre de la base de datos que especificó es distinto de la base de datos actual.

Nota

En Azure SQL Database, puede que DB_ID no devuelva el mismo valor que la columna database_id de sys.databases y sys.database_service_objectives. Estas dos vistas devuelven valores database_id que son únicos dentro del servidor lógico, mientras que DB_ID y la columna database_id de otras vistas del sistema devuelven valores que son únicos dentro de una base de datos única o dentro de un grupo elástico.

Permisos

Si el autor de la llamada de DB_ID no posee una base de datos master o distinta de tempdb determinada, como mínimo se requieren los permisos ALTER ANY DATABASE o VIEW ANY DATABASE de nivel de servidor para ver la fila DB_ID correspondiente. Para la base de datos master, DB_ID necesita el permiso CREATE DATABASE como mínimo. La base de datos a la que se conecta el autor de la llamada siempre aparece en sys.databases.

Importante

El rol público tiene el permiso VIEW ANY DATABASE de forma predeterminada, lo que permite a todos los inicios de sesión ver información de la base de datos. Para evitar que un inicio de sesión detecte una base de datos, use REVOKE para revocar el permiso VIEW ANY DATABASE del público, o bien use DENY para denegar el permiso VIEW ANY DATABASE para inicios de sesión individuales.

Ejemplos

A. Devolver el Id. de base de datos de la base de datos actual

En este ejemplo se devuelve el identificador de base de datos de la base de datos actual.

SELECT DB_ID() AS [Database ID];  
GO  

B. Devolver el Id. de base de datos de una base de datos específica

En este ejemplo se devuelve el identificador de base de datos de la base de datos AdventureWorks2022.

SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];  
GO  

C. Usar DB_ID para especificar el valor de un parámetro de una función del sistema

En este ejemplo se usa DB_ID para devolver el identificador de base de datos de la base de datos AdventureWorks2022 en la función del sistema sys.dm_db_index_operational_stats. La función toma un Id. de base de datos como primer parámetro.

DECLARE @db_id INT;  
DECLARE @object_id INT;  
SET @db_id = DB_ID(N'AdventureWorks2022');  
SET @object_id = OBJECT_ID(N'AdventureWorks2022.Person.Address');  
IF @db_id IS NULL   
  BEGIN;  
    PRINT N'Invalid database';  
  END;  
ELSE IF @object_id IS NULL  
  BEGIN;  
    PRINT N'Invalid object';  
  END;  
ELSE  
  BEGIN;  
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);  
  END;  
GO  

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

D. Devolver el identificador de la base de datos actual

En este ejemplo se devuelve el identificador de base de datos de la base de datos actual.

SELECT DB_ID();  

E. Devolver el identificador de la base de datos con nombre

En este ejemplo se devuelve el identificador de base de datos de la base de datos AdventureWorksDW2022.

SELECT DB_ID('AdventureWorksPDW2012');  

Consulte también

DB_NAME (Transact-SQL)
Funciones de metadatos (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)