DB_ID(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

この関数は、指定されたデータベースのデータベース識別 (ID) 番号を返します。

Transact-SQL 構文表記規則

構文

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

D. 現在のデータベースの ID を返す

この例では、現在のデータベースのデータベース ID を返します。

SELECT DB_ID();  

E. 指定したデータベースの ID を返す

この例では、AdventureWorksDW2022 データベースのデータベース ID を返します。

SELECT DB_ID('AdventureWorksPDW2012');