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)