SQL Server Profilerでトリガーの詳細情報を収集する方法
SQL Profilerによるトリガー実行の監視方法
SQL Profilerは、SQL Serverデータベースに対するさまざまな操作を監視するツールです。トリガーの実行を監視するには、トレースを作成し、トリガーイベントをフィルターで選択する必要があります。
手順
- SQL Server Management Studio (SSMS) を起動します。
- オブジェクトエクスプローラーで、データベースエンジン > サーバー > トレース を展開します。
- 右クリックして、新しいトレース を選択します。
- トレースのプロパティ ダイアログボックスで、トレース名と保存場所を入力します。
- イベントの選択 ページで、トリガー カテゴリを選択します。
- 監視するトリガーを選択します。
- 詳細 ページで、収集するデータを選択します。
- OK をクリックして、トレースを開始します。
トレース結果の表示
トレースが完了したら、トレースファイル を開いて結果を表示できます。
- オブジェクトエクスプローラーで、トレース フォルダーを展開します。
- 監視対象のトレースファイルを右クリックして、トレースファイルの表示 を選択します。
- トレースビューア で、トレース結果を分析できます。
フィルターの使用方法
トレース結果を絞り込むには、フィルターを使用できます。
- トレースビューア で、フィルター ツールバーを選択します。
- フィルター条件を入力します。
補足
- SQL Profilerは、SQL Server 2005を含むすべてのバージョンのSQL Serverで使用できます。
- SQL Profilerは、本番環境で使用するには注意が必要です。トレースによってパフォーマンスが低下する可能性があります。
- 他の監視ツールも利用できます。
用語集
- トリガー: データベース操作に対して実行される一連のSQL ステートメント
- トレース: データベースに対する操作を記録するプロセス
- トレースファイル: トレース結果を保存するファイル
- トレースビューア: トレースファイルを表示および分析するためのツール
USE AdventureWorks2019
-- 新しいトレースを作成
CREATE TRACE MyTrace
GO
-- トリガーイベントを選択
ALTER TRACE MyTrace
ADD EVENT sqlserver.trigger_fired
GO
-- 監視対象のトリガーを選択
ALTER TRACE MyTrace
ADD FILTER
@TriggerName = 'Product_Update'
GO
-- 詳細情報を収集
ALTER TRACE MyTrace
ADD COLUMN TextData
GO
-- トレースを開始
START TRACE MyTrace
GO
-- トリガーを実行
UPDATE Product
SET ListPrice = ListPrice * 1.1
-- トレースを停止
STOP TRACE MyTrace
GO
-- トレース結果を表示
OPEN TRACE MyTrace
GO
このコードは、Product_Update
トリガーの実行を監視します。トレース結果は、TextData
列に含まれるSQL ステートメントを含みます。
注意: このコードは、学習目的のみで使用してください。本番環境で使用するには、コードを編集する必要があります。
SQL Profiler 以外のトリガー実行監視方法
SQL Server 2008以降では、データベース監査機能を使用してトリガーの実行を監視できます。データベース監査は、データベースに対するさまざまな操作をログに記録する機能です。トリガーの実行を監視するには、監査ログを分析する必要があります。
拡張イベント
SQL Server 2012以降では、拡張イベントを使用してトリガーの実行を監視できます。拡張イベントは、SQL Serverのさまざまなイベントを監視するための新しいフレームワークです。トリガーの実行を監視するには、拡張イベントセッションを作成し、トリガーイベントをフィルターで選択する必要があります。
トリガーの実行に関する情報は、トリガーログに記録されます。トリガーログは、トリガーの実行時間、ユーザー名、トリガー名などの情報を提供します。
自作ツール
トリガーの実行を監視する自作ツールを作成することもできます。ツールは、トリガーの実行に関する情報をデータベースから取得し、分析する必要があります。
各方法の比較
方法 | メリット | デメリット |
---|---|---|
SQL Profiler | 使いやすい | パフォーマンスに影響を与える可能性がある |
データベース監査 | パフォーマンスに影響を与えない | 複雑な設定が必要 |
拡張イベント | 柔軟性が高い | 複雑な設定が必要 |
トリガーログ | シンプル | 詳細な情報が得られない |
自作ツール | 柔軟性が高い | 開発コストがかかる |
sql-server sql-server-2005 sql-server-profiler