DML トリガーに関する情報の取得

このトピックでは、SQL Server 2012 で SQL Server Management Studio または Transact-SQL を使用して DML トリガーに関する情報を取得する方法について説明します。 この情報には、テーブルに設定されたトリガーの種類、名前、所有者、および作成日または変更日を確認できます。 トリガーが作成時に暗号化されていない場合は、トリガーの定義を取得します。 定義は、トリガーを定義しているテーブルに対してそのトリガーがどのように作用するかを理解するのに役立ちます。 また、特定のトリガーが使用しているオブジェクトを見つけることもできます。 この情報を使用すると、データベースで変更または削除された場合にトリガーに影響を及ぼすオブジェクトを確認できます。

このトピックの内容

  • 作業を開始する準備:

    セキュリティ

  • DML トリガーに関する情報を取得するために使用するもの:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

セキュリティ

権限

  • sys.sql.modulessys.objectsys.triggerssys.eventssys.trigger_events
    カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。詳細については、「メタデータ表示の構成」を参照してください。

  • OBJECT_DEFINITION、OBJECTPROPERTY、sp_helptext
    public ロールのメンバーシップが必要です。 ユーザー オブジェクトの定義は、オブジェクトの所有者、または ALTER、CONTROL、TAKE OWNERSHIP、VIEW DEFINITION のいずれかの権限を許可された人が表示できます。 これらの権限は db_ownerdb_ddladmin、および db_securityadmin 固定データベース ロールのメンバーが暗黙的に保有します。

  • sys.sql_expression_dependencies
    データベースに対する VIEW DEFINITION 権限およびデータベースの sys.sql_expression_dependencies に対する SELECT 権限が必要です。 既定では、SELECT 権限は db_owner 固定データベース ロールのメンバーだけに与えられます。 SELECT 権限と VIEW DEFINITION 権限が別のユーザーに与えられている場合、権限が許可されているユーザーはデータベース内のすべての依存関係を表示できます。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

DML トリガーの定義を表示するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. 目的のデータベースを展開し、[テーブル] を展開します。次に、定義を表示するトリガーが格納されているテーブルを展開します。

  3. [トリガー] を展開します。目的のトリガーを右クリックし、[変更] をクリックします。 DML トリガーの定義がクエリ ウィンドウに表示されます。

DML トリガーの依存関係を表示するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. 目的のデータベースを展開し、[テーブル] を展開します。次に、表示するトリガーとその依存関係が格納されているテーブルを展開します。

  3. [トリガー] を展開します。目的のトリガーを右クリックし、[依存関係の表示] をクリックします。

  4. [オブジェクトの依存関係] ウィンドウで、DML トリガーに依存するオブジェクトを表示するには、[<DML トリガー名> に依存するオブジェクト] を選択します。 オブジェクトが [依存関係] 領域に表示されます。

    DML が依存するオブジェクトを表示するには、[<DML トリガー名> が依存するオブジェクト] を選択します。 オブジェクトが [依存関係] 領域に表示されます。 すべてのオブジェクトを表示するには、各ノードを展開します。

  5. [依存関係] 領域に表示されたオブジェクトに関する情報を取得するには、そのオブジェクトをクリックします。 [選択したオブジェクト] フィールドの [名前][種類]、および [依存関係の種類] の各ボックスに情報が表示されます。

  6. [オブジェクトの依存関係] ウィンドウを閉じるには、[OK] をクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

DML トリガーの定義を表示するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次のいずれかの例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 それぞれの例は、iuPerson トリガーの定義を表示する方法を示します。

USE AdventureWorks2012;
GO
SELECT definition 
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(N'Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition; 
GO

USE AdventureWorks2012; 
GO
EXEC sp_helptext 'Person.iuPerson'
GO

DML トリガーの依存関係を表示するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次のいずれかの例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 それぞれの例は、iuPerson トリガーの依存関係を表示する方法を示します。

USE AdventureWorks2012; 
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, 
    o.type_desc AS referencing_desciption, 
    COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, 
    referencing_class_desc, referenced_class_desc, 
    referenced_server_name, referenced_database_name, referenced_schema_name, 
    referenced_entity_name, 
    COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, 
    is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referencing_id = OBJECT_ID(N'Person.iuPerson'); 
GO

データベース内の DML トリガーに関する情報を表示するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次のいずれかの例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 それぞれの例は、データベース内の DML トリガー (TR) に関する情報を表示する方法を示します。

USE AdventureWorks2012; 
GO
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger
FROM sys.triggers
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT  name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published
FROM sys.objects
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger'); 
GO

DML トリガーを起動するイベントに関する情報を表示するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次のいずれかの例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 それぞれの例は、iuPerson トリガーを起動するイベントを表示する方法を示します。

USE AdventureWorks2012; 
GO
SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc 
FROM sys.events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO SELECT object_id, type,is_first, is_last
FROM sys.trigger_events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

参照

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_rename (Transact-SQL)

ALTER TRIGGER (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules (Transact-SQL)

sys.server_triggers (Transact-SQL)

sys.server_trigger_events (Transact-SQL)

sys.server_sql_modules (Transact-SQL)

sys.server_assembly_modules (Transact-SQL)

OBJECTPROPERTY (Transact-SQL)

OBJECT_DEFINITION (Transact-SQL)