DB_ID (Transact-SQL)

Si applica a:yes SQL Server (tutte le versioni supportate) Yesdatabase SQL di Azure YesIstanza gestita di SQL di Azure yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Questa funzione restituisce il numero di identificazione (ID) di un database specificato.

Topic link iconConvenzioni della sintassi transact-SQL

Sintassi

DB_ID ( [ 'database_name' ] )   

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

'database_name'
Nome del database il cui numero di ID database verrà restituito da DB_ID. Se la chiamata a DB_ID omette database_name, DB_ID restituisce l'ID del database corrente.

Tipi restituiti

int

Osservazioni

DB_ID può essere usato solo per restituire l'identificatore del database corrente nel database SQL di Azure. Se il nome del database specificato è diverso da quello del database corrente, viene restituito NULL.

Nota

Se usato con il database SQL di Azure, DB_ID potrebbe non restituire lo stesso risultato della query di database_id da sys.databases. Se il chiamante di DB_ID confronta il risultato con altre viste sys, è necessario eseguire una query su sys.databases.

Autorizzazioni

Se il chiamante di DB_ID non è proprietario di un database non master o non tempdb specifico, sono necessarie almeno le autorizzazioni a livello di server ALTER ANY DATABASE o VIEW ANY DATABASE per visualizzare la riga DB_ID corrispondente. Per il database master, DB_ID necessita almeno dell'autorizzazione CREATE DATABASE. Il database a cui si connette il chiamante verrà sempre visualizzato in sys.databases.

Importante

Per impostazione predefinita, il ruolo public ha l'autorizzazione VIEW ANY DATABASE, che consente a tutti gli account di accesso di visualizzare informazioni sul database. Per impedire a un account di accesso di rilevare un database, usare REVOKE per revocare l'autorizzazione VIEW ANY DATABASE da public o DENY per negare l'autorizzazione VIEW ANY DATABASE per i singoli account di accesso.

Esempi

R. Restituzione dell'ID del database corrente

Questo esempio restituisce l'ID del database corrente.

SELECT DB_ID() AS [Database ID];  
GO  

B. Restituzione dell'ID di un database specifico

In questo esempio viene restituito l'ID del database AdventureWorks2012 .

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

C. Utilizzo di DB_ID per specificare il valore di un parametro di una funzione di sistema

In questo esempio viene DB_ID utilizzato per restituire l'ID del database AdventureWorks2012 nella funzione sys.dm_db_index_operational_statsdi sistema . La funzione utilizza un ID di database come primo parametro.

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  

Esempi: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Restituire l'ID del database corrente

Questo esempio restituisce l'ID del database corrente.

SELECT DB_ID();  

E. Restituire l'ID di un database denominato.

Questo esempio restituisce l'ID del database AdventureWorksDW2012.

SELECT DB_ID('AdventureWorksPDW2012');  

Vedi anche

DB_NAME (Transact-SQL)
Funzioni per i metadati (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)