Partilhar via


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)