DB_ID (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Cette fonction retourne le numéro d’identification (ID) de la base de données spécifiée.

Conventions de la syntaxe Transact-SQL

Syntaxe

DB_ID ( [ 'database_name' ] )   

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

'database_name'
Nom de la base de données dont le numéro d’ID DB_ID est retourné. Si l’appel à DB_ID omet database_name, DB_ID retourne l’ID de la base de données active.

Types de retour

int

Notes

DB_ID ne peut être utilisé que pour retourner l’identificateur de la base de données active dans Azure SQL Database. La valeur NULL est retournée si le nom spécifié n’est pas celui de la base de données active.

Notes

Dans Azure SQL Database, DB_ID peut ne pas retourner la même valeur que la colonne database_id dans sys.databases et sys.database_service_objectives. Ces deux vues retournent des valeurs database_id qui sont uniques au sein du serveur logique, alors que DB_ID et la colonne database_id dans d’autres vues système retournent des valeurs qui sont uniques au sein d’une base de données unique ou d’un pool élastique.

Autorisations

Si l’appelant de DB_ID ne possède pas une base de données non MASTER ou non tempdb spécifique, au minimum les autorisations au niveau serveur ALTER ANY DATABASE ou VIEW ANY DATABASE sont nécessaires pour consulter la ligne DB_ID correspondante. Pour la base de données MASTER, DB_ID a besoin au minimum de l’autorisation CREATE DATABASE. La base de données à laquelle l’appelant se connecte apparaît toujours dans sys.databases.

Important

Par défaut, le rôle public a l’autorisation VIEW ANY DATABASE, qui permet à toutes les connexions de consulter les informations de la base de données. Pour empêcher une connexion de détecter une base de données, révoquez (REVOKE) l’autorisation publique VIEW ANY DATABASE, ou refusez (DENY) l’autorisation VIEW ANY DATABASE pour les connexions individuelles.

Exemples

R. Retour de l'ID de la base de données active

L’exemple suivant retourne l’ID de la base de données active.

SELECT DB_ID() AS [Database ID];  
GO  

B. Retour de l'ID d'une base de données spécifique

L’exemple suivant retourne l’ID de la base de données AdventureWorks2022.

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

C. Utilisation de DB_ID pour spécifier la valeur d'un paramètre de fonction système

L’exemple suivant utilise DB_ID pour retourner l’ID de la base de données AdventureWorks2022 dans la fonction système sys.dm_db_index_operational_stats. Le premier paramètre de la fonction est un ID de base de données.

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  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

D. Renvoi de l’ID de la base de données active

L’exemple suivant retourne l’ID de la base de données active.

SELECT DB_ID();  

E. Renvoi de l’ID d’une base de données nommée

L'exemple suivant retourne l'ID de la base de données AdventureWorksDW2022.

SELECT DB_ID('AdventureWorksPDW2012');  

Voir aussi

DB_NAME (Transact-SQL)
Fonctions de métadonnées (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)