次の方法で共有


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

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

このトピックについて

開始する前に

安全

権限

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

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 権限が別のユーザーに与えられている場合、権限が許可されているユーザーはデータベース内のすべての依存関係を表示できます。

SQL Server Management Studio の使用

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

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

  2. 目的のデータベースを展開し、[ テーブル] を展開し、定義を表示するトリガーを含むテーブルを展開します。

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

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

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

  2. 目的のデータベースを展開し、[ テーブル] を展開し、表示するトリガーとその依存関係を含むテーブルを展開します。

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

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

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

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

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

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  

こちらもご覧ください

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
トリガーを変更 (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
システムトリガーイベント (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
サーバートリガー (sys.server_triggersTransact-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)