適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
この関数は、指定されたデータベースのデータベース識別 (ID) 番号を返します。
構文
DB_ID ( [ 'database_name' ] )
引数
'database_name'
データベース ID 番号 DB_ID を持つデータベースの名前が返されます。
DB_ID の呼び出しで database_name が省略された場合、DB_ID は現在のデータベースの ID を返します。
戻り値の型
int
解説
DB_ID は、Azure SQL Database 内の現在のデータベースのデータベース ID を取得するためにのみ使用できます。 指定したデータベース名が現在のデータベースではない場合は、NULL が返されます。
Note
Azure SQL Database では、DB_ID が database_id および sys.database_service_objectives の 列と同じ値を返さない場合があります。 これら 2 つのビューは論理サーバー内で一意の値 database_id を返し、他のシステム ビューの DB_ID と database_id 列は 1 つのデータベースまたはエラスティック プール内で一意の値を返します。
アクセス許可
DB_ID の呼び出し元が、マスター以外または tempdb 以外の特定データベースを所有していない場合は、対応する ALTER ANY DATABASE 行を確認するために、少なくとも、サーバー レベルの VIEW ANY DATABASE または DB_ID 権限が必要です。
マスター データベースの場合、DB_ID には少なくとも CREATE DATABASE 権限が必要です。 呼び出し元が接続するデータベースは常に、sys.databases 内で確認できます。
重要
既定では、public ロールは、すべてのログインにデータベース情報の表示を許可する VIEW ANY DATABASE 権限を持っています。 ログインでデータベースが検出されるのを阻止するには、public から REVOKE を VIEW ANY DATABASE するか、または、個別のログインに対する DENY を VIEW ANY DATABASE します。
例
A. 現在のデータベースのデータベース ID を返す
この例では、現在のデータベースのデータベース ID を返します。
SELECT DB_ID() AS [Database ID];
GO
B. 指定したデータベースのデータベース ID を返す
この例では、AdventureWorks2025 データベースのデータベース ID を返します。
SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];
GO
C. DB_ID を使用してシステム関数パラメーターの値を指定する
この例では、DB_ID を使用して、AdventureWorks2025 データベースのデータベース ID をシステム関数 sys.dm_db_index_operational_stats で返します。 この関数はデータベース ID を最初のパラメーターとしてとります。
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
例: Azure Synapse Analytics、Analytics Platform System (PDW)
D. 現在のデータベースの ID を返す
この例では、現在のデータベースのデータベース ID を返します。
SELECT DB_ID();
E. 指定したデータベースの ID を返す
この例では、AdventureWorksDW2022 データベースのデータベース ID を返します。
SELECT DB_ID('AdventureWorksPDW2012');
関連項目
DB_NAME(Transact-SQL)
メタデータ関数 (Transact-SQL)
sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats(Transact-SQL)