DB_ID (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Transact-SQL 構文表記規則

構文

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_IDsys.databases および sys.database_service_objectivesdatabase_id 列と同じ値を返さない場合があります。 これら 2 つのビューは論理サーバー内で一意の値 database_id を返し、他のシステム ビューの DB_IDdatabase_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 DATABASEREVOKE するか、または、個別のログインに対する VIEW ANY DATABASEDENY します。

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)