SQL Serverでは、DB_ID()
を使用できます 現在のデータベースまたは別の指定されたデータベースのIDを返す関数。
それが機能する方法は、データベースの名前を引数として渡すと、関数はそのデータベースのIDを返します。名前を渡さないと、現在のデータベースのIDが返されます。
例1-現在のデータベースを返す
現在のデータベースの名前を返す方法を示す基本的な例を次に示します。
SELECT DB_ID() AS [Current Database];
結果:
+--------------------+ | Current Database | |--------------------| | 6 | +--------------------+
この場合、現在のデータベースのIDは6です。
データベースを切り替えることで、それをさらに実証する別の例を次に示します。
USE Music; SELECT DB_ID() AS [Current Database]; USE EMS; SELECT DB_ID() AS [Current Database]; USE WideWorldImportersDW; SELECT DB_ID() AS [Current Database];
結果:
Changed database context to 'Music'. +--------------------+ | Current Database | |--------------------| | 5 | +--------------------+ (1 row affected) Changed database context to 'EMS'. +--------------------+ | Current Database | |--------------------| | 14 | +--------------------+ (1 row affected) Changed database context to 'WideWorldImportersDW'. +--------------------+ | Current Database | |--------------------| | 6 | +--------------------+ (1 row affected)
例2–特定のデータベースを返す
特定のデータベースを返す例を次に示します。これは、データベースの名前を渡すことによって行われます。
SELECT DB_ID('Music') AS Result;
結果:
+----------+ | Result | |----------| | 5 | +----------+
詳細はこちら:
SELECT DB_ID('master') AS [master], DB_ID('tempdb') AS [tempdb], DB_ID('model') AS [model], DB_ID('msdb') AS [msdb], DB_ID('Music') AS [Music], DB_ID('WideWorldImportersDW') AS ['WideWorldImportersDW'];
結果:
+----------+----------+---------+--------+---------+--------------------------+ | master | tempdb | model | msdb | Music | 'WideWorldImportersDW' | |----------+----------+---------+--------+---------+--------------------------| | 1 | 2 | 3 | 4 | 5 | 6 | +----------+----------+---------+--------+---------+--------------------------+
例3–データベースクエリ
DB_ID()
の例を次に示します。 重宝するかもしれません。
USE WideWorldImportersDW; SELECT name AS [Foreign Key], OBJECT_NAME(parent_object_id, DB_ID('Music')) AS [Parent Object Name], OBJECT_NAME(referenced_object_id, DB_ID('Music')) AS [Referenced Object Name] FROM Music.sys.foreign_keys WHERE name = 'FK_Artists_Country';
結果:
Changed database context to 'WideWorldImportersDW'. +--------------------+----------------------+--------------------------+ | Foreign Key | Parent Object Name | Referenced Object Name | |--------------------+----------------------+--------------------------| | FK_Artists_Country | Artists | Country | +--------------------+----------------------+--------------------------+ (1 row affected)
この例では、現在のデータベースはWideWorldImportersDWですが、Musicデータベースの外部キーに関する情報が必要です。 OBJECT_NAME()
関数はIDに基づいてオブジェクト名を返しますが、オブジェクトが別のデータベースにある場合は、データベースIDを指定することもできます。ただし、この場合、私はデータベース名しか知りません。 DB_ID()
を使用できるので、問題ありません。 名前に基づいてIDを返します。