Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
Questa funzione restituisce il numero di identificazione (ID) di un database specificato.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
DB_ID ( [ 'database_name' ] )
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
In database SQL di Azure potrebbe DB_ID non restituire lo stesso valore della database_id colonna in sys.databases e sys.database_service_objectives. Queste due viste restituiscono valori univoci all'interno del server logico, mentre database_id e la DB_ID colonna in altre viste di sistema restituiscono database_id valori univoci all'interno di un singolo database o all'interno di un pool elastico.
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
Questo esempio restituisce l'ID del database AdventureWorks2025.
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
Questo esempio usa l'istruzione DB_ID per restituire l'ID del database AdventureWorks2025 nella funzione di sistema sys.dm_db_index_operational_stats. La funzione utilizza un ID di database come primo parametro.
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
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (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.
In questo esempio viene restituito l'ID database del database AdventureWorksDW2022.
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)