DB_ID (Transact-SQL)DB_ID (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Esta função retorna o número da ID (identificação) de um banco de dados especificado.This function returns the database identification (ID) number of a specified database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

DB_ID ( [ 'database_name' ] )   

ArgumentosArguments

'database_name''database_name'
O nome do banco de dados cujo número de identificação retornará DB_ID.The name of the database whose database ID number DB_ID will return. Se a chamada para DB_ID omite database_name, DB_ID retorna a ID do banco de dados atual.If the call to DB_ID omits database_name, DB_ID returns the ID of the current database.

Tipos de retornoReturn types

intint

RemarksRemarks

O DB_ID só pode ser usado para retornar o identificador do banco de dados atual no Banco de Dados SQL.DB_ID may only be used to return the database identifier of the current database in Azure SQL Database. NULL será retornado se o nome do banco de dados especificado for diferente do atual.NULL is returned if the specified database name is other than the current database.

Observação

Quando usado com o Banco de Dados SQL do Azure, DB_ID pode não retornar o mesmo resultado de uma consulta por database_id do sys.databases.When used with Azure SQL Database, DB_ID may not return the same result as querying database_id from sys.databases. Se o chamador de DB_ID estiver comparando o resultado a outras exibições sys, deve-se consultar sys.databases.If the caller of DB_ID is comparing the result to other sys views, then sys.databases should be queried instead.

PermissõesPermissions

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.If the caller of DB_ID does not own a specific non-master or non-tempdb database, ALTER ANY DATABASE or VIEW ANY DATABASE server-level permissions at minimum are required to see the corresponding DB_ID row. Para o banco de dados mestre, DB_ID precisa, no mínimo, da permissão CREATE DATABASE.For the master database, DB_ID needs CREATE DATABASE permission at minimum. O banco de dados ao qual o chamador se conecta será sempre exibido em sys.databases.The database to which the caller connects will always appear in 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.By default, the public role has the VIEW ANY DATABASE permission, which allows all logins to see database information. 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.To prevent a login from detecting a database, REVOKE the VIEW ANY DATABASE permission from public, or DENY the VIEW ANY DATABASE permission for individual logins.

ExemplosExamples

A.A. Retornando a ID do banco de dados atualReturning the database ID of the current database

Este exemplo retorna a ID do banco de dados atual.This example returns the database ID of the current database.

SELECT DB_ID() AS [Database ID];  
GO  

B.B. Retornando a ID de um banco de dados especificadoReturning the database ID of a specified database

Este exemplo retorna a ID do banco de dados AdventureWorks2012AdventureWorks2012.This example returns the database ID of the AdventureWorks2012AdventureWorks2012 database.

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

C.C. Usando DB_ID para especificar o valor de um parâmetro de função do sistemaUsing DB_ID to specify the value of a system function parameter

Este exemplo usa DB_ID para retornar a ID do banco de dados AdventureWorks2012AdventureWorks2012 na função do sistema sys.dm_db_index_operational_stats.This example uses DB_ID to return the database ID of the AdventureWorks2012AdventureWorks2012 database in the system function sys.dm_db_index_operational_stats. A função aceita um ID de banco de dados como o primeiro parâmetro.The function takes a database ID as the first parameter.

DECLARE @db_id int;  
DECLARE @object_id int;  
SET @db_id = DB_ID(N'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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 SQL Data WarehouseAzure SQL Data Warehouse e Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

D.D. Retornar a ID do banco de dados atualReturn the ID of the current database

Este exemplo retorna a ID do banco de dados atual.This example returns the database ID of the current database.

SELECT DB_ID();  

E.E. Retornar a ID de um banco de dados nomeado.Return the ID of a named database.

Este exemplo retorna a ID do banco de dados AdventureWorksDW2012.This example returns the database ID of the AdventureWorksDW2012 database.

SELECT DB_ID('AdventureWorksPDW2012');  

Confira tambémSee also

DB_NAME (Transact-SQL)DB_NAME (Transact-SQL)
Funções de metadados (Transact-SQL)Metadata Functions (Transact-SQL)
sys.databases (Transact-SQL)sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)sys.dm_db_index_operational_stats (Transact-SQL)