DB_ID (Transact-SQL)DB_ID (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

この関数は、指定されたデータベースのデータベース識別 (ID) 番号を返します。This function returns the database identification (ID) number of a specified database.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

DB_ID ( [ 'database_name' ] )   

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

'database_name''database_name'
データベース ID 番号 DB_ID を持つデータベースの名前が返されます。The name of the database whose database ID number DB_ID will return. DB_ID の呼び出しで database_name が省略された場合、DB_ID は現在のデータベースの ID を返します。If the call to DB_ID omits database_name, DB_ID returns the ID of the current database.

戻り値の型Return types

intint

解説Remarks

DB_ID は、Azure SQL Database 内の現在のデータベースのデータベース ID を取得するためにのみ使用できます。DB_ID may only be used to return the database identifier of the current database in Azure SQL Database. 指定したデータベース名が現在のデータベースではない場合は、NULL が返されます。NULL is returned if the specified database name is other than the current database.

注意

Azure SQL Database と共に使用する場合、DB_ID では、sys.databases からの database_id のクエリと同じ結果が返されないことがあります。When used with Azure SQL Database, DB_ID may not return the same result as querying database_id from sys.databases. DB_ID の呼び出し元で結果が他の sys ビューと比較されている場合は、代わりに sys.databases のクエリを実行する必要があります。If the caller of DB_ID is comparing the result to other sys views, then sys.databases should be queried instead.

アクセス許可Permissions

DB_ID の呼び出し元が、マスター 以外または tempdb 以外の特定データベースを所有していない場合は、対応する DB_ID 行を確認するために、少なくとも、サーバー レベルの ALTER ANY DATABASE または VIEW ANY DATABASE 権限が必要です。If the caller of DB_ID does not own a specific non-master or non-tempdb database, ALTER ANY DATABASE or VIEW ANY DATABASE server-level permissions at minimum are required to see the corresponding DB_ID row. マスター データベースの場合、DB_ID には少なくとも CREATE DATABASE 権限が必要です。For the master database, DB_ID needs CREATE DATABASE permission at minimum. 呼び出し元が接続するデータベースは常に、sys.databases 内で確認できます。The database to which the caller connects will always appear in sys.databases.

重要

既定では、public ロールは、すべてのログインにデータベース情報の表示を許可する VIEW ANY DATABASE 権限を持っています。By default, the public role has the VIEW ANY DATABASE permission, which allows all logins to see database information. ログインでデータベースが検出されるのを阻止するには、public から VIEW ANY DATABASEREVOKE するか、または、個別のログインに対する VIEW ANY DATABASEDENY します。To prevent a login from detecting a database, REVOKE the VIEW ANY DATABASE permission from public, or DENY the VIEW ANY DATABASE permission for individual logins.

Examples

A.A. 現在のデータベースのデータベース ID を返すReturning the database ID of the current database

この例では、現在のデータベースのデータベース ID を返します。This example returns the database ID of the current database.

SELECT DB_ID() AS [Database ID];  
GO  

B.B. 指定したデータベースのデータベース ID を返すReturning the database ID of a specified database

この例では、AdventureWorks2012AdventureWorks2012 データベースのデータベース ID を返します。This example returns the database ID of the AdventureWorks2012AdventureWorks2012 database.

SELECT DB_ID(N'AdventureWorks2008R2') AS [Database ID];  
GO  

C.C. DB_ID を使用してシステム関数パラメーターの値を指定するUsing DB_ID to specify the value of a system function parameter

この例では、DB_ID を使用して、AdventureWorks2012AdventureWorks2012 データベースのデータベース ID をシステム関数 sys.dm_db_index_operational_stats で返します。This example uses DB_ID to return the database ID of the AdventureWorks2012AdventureWorks2012 database in the system function sys.dm_db_index_operational_stats. この関数はデータベース ID を最初のパラメーターとしてとります。The function takes a database ID as the first parameter.

DECLARE @db_id INT;  
DECLARE @object_id INT;  
SET @db_id = DB_ID(N'AdventureWorks2012');  
SET @object_id = OBJECT_ID(N'AdventureWorks2012.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 AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

D.D. 現在のデータベースの ID を返すReturn the ID of the current database

この例では、現在のデータベースのデータベース ID を返します。This example returns the database ID of the current database.

SELECT DB_ID();  

E.E. 指定したデータベースの ID を返すReturn the ID of a named database.

この例では、AdventureWorksDW2012 データベースのデータベース ID を返します。This example returns the database ID of the AdventureWorksDW2012 database.

SELECT DB_ID('AdventureWorksPDW2012');  

関連項目See also

DB_NAME (Transact-SQL)DB_NAME (Transact-SQL)
メタデータ関数 (Transact-SQL)Metadata Functions (Transact-SQL)
sys.databases (Transact-SQL)sys.databases (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)sys.dm_db_index_operational_stats (Transact-SQL)