イベント通知と SQL トレースについて
次の表では、サーバー イベントを監視する場合のイベント通知と SQL トレースの使用を比較します。
SQL トレース |
イベント通知 |
---|---|
SQL トレースでは、トランザクションに関連したパフォーマンス上のオーバーヘッドは生じません。データのパッケージ化が効率的に行われます。 |
XML 形式のイベント データの作成やイベント通知の送信に関連して、パフォーマンス上のオーバーヘッドが生じます。 |
SQL トレースは、どのトレース イベント クラスでも監視できます。 |
イベント通知では、トレース イベント クラスのサブセット、およびすべての DDL (データ定義言語) イベントを監視できます。 |
トレース イベント内に生成するデータ列をカスタマイズできます。 |
イベント通知で返される XML 形式のイベント データのスキーマは固定です。 |
DDL で生成されるトレース イベントは、DDL ステートメントがロールバックされるかどうかにかかわらず、常に生成されます。 |
対応する DDL ステートメントのイベントがロールバックされると、イベント通知は発生しません。 |
トレース イベント データの中間フローを管理するには、トレース ファイルやトレース テーブルを設定し、管理する必要があります。 |
イベント通知データの中間管理は、Service Broker キューを使用して自動的に行われます。 |
サーバーが再起動されるたびに、トレースを再起動する必要があります。 |
イベント通知は、登録後サーバー サイクル間で保持され、トランザクション処理されます。 |
トレースを開始すると、それ以後は起動を制御できません。停止時間とフィルタ時間を使用して、開始時点を指定できます。対応するトレース ファイルにポーリングすることで、トレースにアクセスできます。 |
イベント通知によって生成されたメッセージを受信するキューに対して WAITFOR ステートメントを使用することで、イベント通知を制御できます。キューにポーリングすることで、イベント通知にアクセスできます。 |
トレースを作成するために必要最低限の権限は、ALTER TRACE 権限です。対応するコンピュータ上にトレース ファイルを作成する場合にも、権限が必要です。 |
最低限の権限は、作成するイベント通知の種類によって異なります。詳細については、「CREATE EVENT NOTIFICATION (Transact-SQL)」を参照してください。対応するキューでは、RECEIVE 権限も必要です。 |
トレースはリモートで受信できます。 |
イベント通知はリモートで受信できます。 |
トレース イベントは、システム ストアド プロシージャを使用して実装されます。 |
イベント通知は、データベース エンジンと Service Broker の組み合わせと Transact-SQL ステートメントを使用して実装されます。 |
プログラムからトレース イベント データにアクセスするには、対応するトレース テーブルへのクエリを実行するか、トレース ファイルを解析するか、または SQL Server 管理オブジェクト (SMO) TraceReader クラスを使用します。 |
プログラムからイベント データにアクセスするには、XML 形式のイベント データに対して XQuery を発行するか、SMO イベント クラスを使用します。 |