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

  • 記事
  • 12/17/2021
  • 4 読むべき分
    • M
    • r
    • c
    • p
    • r
    • c
    • p
このページは役に立ちますか?

ありがとうございます。

に適用されます: yesSQL Server(すべてのサポートされているバージョン)はいAzure SQL Database

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

  • 始める前に:

    セキュリティ

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

    SQL Server Management Studio

    Transact-SQLを使用します

始める前に

セキュリティ

権限

sys。sqlです。モジュール、sys。オブジェクト、sys。トリガー、sys。イベント、sys。trigger_events
カタログビューでのメタデータの可視性は、ユーザーが所有しているか、ユーザーに権限が付与されているセキュリティ保護可能なものに制限されます。 詳細については、”メタデータの表示設定”を参照してください。

OBJECT_DEFINITION,OBJECTPROPERTY,sp_helptext
には、publicロールのメンバーシップが必要です。 ユーザーオブジェクトの定義は、ALTER、CONTROL、TAKE OWNERSHIP、またはVIEW DEFINITIONのいずれかの権限を持つオブジェクト所有者または権限付与対象ユーザーに表示されます。 これらの権限は、db_owner、db_ddladmin、およびdb_securityadmin固定データベースロールのメンバーによって暗黙的に保持されます。

sql_expression_dependencies
には、データベースに対するVIEW DEFINITION権限とsysに対するSELECT権限が必要です。データベースのsql_expression_dependencies。 既定では、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. [依存関係Dependencies]領域に表示されるオブジェクトに関する情報を取得するには、オブジェクトをクリックします。 [選択したオブジェクト]フィールドでは、[名前]、[タイプ]、[依存関係タイプ]ボックスに情報が表示されます。

  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)
ALTER TRIGGER(Transact-SQL)
sp_help(Transact-SQL)
Sp_helptrigger(transact-sql)
sys.トリガー(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)

Write a Comment

メールアドレスが公開されることはありません。