DB_ID (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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' ] )
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)