Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
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 AdventureWorks2025.
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 AdventureWorks2025 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)