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