DB_ID (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Esta função retorna o número da ID (identificação) de um banco de dados especificado.
Convenções de sintaxe de Transact-SQL
Sintaxe
DB_ID ( [ 'database_name' ] )
Argumentos
'database_name'
O nome do banco de dados cujo número de identificação retornará DB_ID
. Se a chamada para DB_ID
omite database_name, DB_ID
retorna a ID do banco de dados atual.
Tipos de retorno
int
Comentários
O DB_ID
só pode ser usado para retornar o identificador do banco de dados atual no Banco de Dados SQL. NULL será retornado se o nome do banco de dados especificado for diferente do atual.
Observação
No Banco de Dados SQL do Azure, DB_ID
pode não retornar o mesmo valor que a coluna database_id
no sys.databases e no sys.database_service_objectives. Essas duas exibições retornam valores database_id
exclusivos dentro do servidor lógico, enquanto DB_ID
e a coluna database_id
em outras exibições do sistema retornam valores que são exclusivos em um banco de dados individual ou dentro de um pool elástico.
Permissões
Se o chamador de DB_ID
não é proprietário de um banco de dados específico não mestre ou não tempdb, são necessárias no mínimo as permissões de nível de servidor ALTER ANY DATABASE
ou VIEW ANY DATABASE
para ver a linha DB_ID
correspondente. Para o banco de dados mestre, DB_ID
precisa, no mínimo, da permissão CREATE DATABASE
. O banco de dados ao qual o chamador se conecta será sempre exibido em sys.databases.
Importante
Por padrão, a função pública tem a permissão VIEW ANY DATABASE
, que permite que todos os logons vejam informações do banco de dados. Para impedir a detecção de um banco de dados por um logon, aplique REVOKE
na permissão VIEW ANY DATABASE
da função pública, ou aplique DENY
na permissão VIEW ANY DATABASE
para logons individuais.
Exemplos
a. Retornando a ID do banco de dados atual
Este exemplo retorna a ID do banco de dados atual.
SELECT DB_ID() AS [Database ID];
GO
B. Retornando a ID de um banco de dados especificado
Este exemplo retorna a ID do banco de dados AdventureWorks2022
.
SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];
GO
C. Usando DB_ID para especificar o valor de um parâmetro de função do sistema
Este exemplo usa DB_ID
para retornar a ID do banco de dados AdventureWorks2022
na função do sistema sys.dm_db_index_operational_stats
. A função aceita um ID de banco de dados como o primeiro 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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
D. Retornar a ID do banco de dados atual
Este exemplo retorna a ID do banco de dados atual.
SELECT DB_ID();
E. Retornar a ID de um banco de dados nomeado.
Este exemplo retorna a ID do banco de dados AdventureWorksDW2022.
SELECT DB_ID('AdventureWorksPDW2012');
Confira também
DB_NAME (Transact-SQL)
funções de metadados (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)