2

SQL Server 2008で拡張イベントを使用して、監視を実行しています。私は主に次のイベントに興味があります。

  • sqlserver.sp_statement_completed
  • sqlserver.sp_statement_starting
  • sqlserver.sql_statement_completed
  • sqlserver.sql_statement_starting

影響を受けるテーブルに従って、これらの拡張イベントを除外できるかどうかを知りたいです。このようなフィルタリングを実行するのに役立つ述語は見たことがありません。単一のストアドプロシージャが実際に複数のテーブルに影響を与える可能性があるため、それらがどのように機能するかさえわかりませんが、誰かが巧妙なトリックを考えた可能性があります。

前もって感謝します!

4

1 に答える 1

2

いいえ、SQL Server 2008には、セッション定義の一部としてこれを実行できるものはありませんが、track_causality = onを使用して、sqlserverを追加すると、イベント後の処理の一部として実行できます。スキーマ安定性のための.lock_aquiredイベントは、オブジェクトレベルでのみロックし、ターゲットにするオブジェクトのobject_idでフィルター処理します。次に、activity_xref_idに基づいてフィルタリングを実行する必要があり、sqlserver.lock_acquiredイベントが関連付けられていないactivity_xref_idsの開始/完了イベントを破棄できます。これは機能しますが、複雑で、多くの追加のノイズデータもキャプチャします。

考えてみると、sqlserver.lock_acquiredイベントをsqlserver.sql_textアクションとsqlserver.tsql_stackアクションとともに使用して、同じことをより少ないノイズで実行することもできます。
特定のオブジェクトへのアクセスと関連付けることができるようにしたい開始/完了イベントによって返される特定のデータ要素がありますか、それともデータベース内の特定のオブジェクトにアクセスするSPとアドホックSQLを知りたいだけですか?

詳細を教えてください。これを示すデモを作成できるかどうかを確認します。

于 2011-09-06T21:40:00.193 に答える