1

SQL Server 2008を使用していますが、DMVを使用してプロシージャ呼び出しをキャッチし、追跡のためにテーブルに保存する必要があります。ストアドプロシージャの呼び出しを取得することは可能ですか?

4

2 に答える 2

2

お探しsys.dm_exec_procedure_statsですか?(MSDNリンク

キャッシュされたストアドプロシージャの集計パフォーマンス統計を返します。ビューは、キャッシュされたストアドプロシージャプランごとに1つの行を返します。行の有効期間は、ストアドプロシージャがキャッシュされたままである限りです。ストアドプロシージャがキャッシュから削除されると、対応する行がこのビューから削除されます。そのとき、sys.dm_exec_query_statsと同様にパフォーマンス統計SQLトレースイベントが発生します。

これから必要なストアドプロシージャ実行統計を監査テーブルに選択できるはずです。必ずしもストアドプロシージャではないアドホッククエリを含めるように監査を拡張する場合は、代わりにsys.dm_exec_query_statsを確認することを検討してください。

于 2012-10-11T07:39:37.773 に答える
2

たぶんあなたが探しているものを完全にではないかもしれませんが、それは始まりかもしれません。ストアドプロシージャの有無にかかわらず、実行されているクエリを探している場合は、これを確認することをお勧めします

select  case
          when r.statement_end_offset = -1 then 
            substring(s.text, (r.statement_start_offset / 2), len(s.text))
          else 
            substring(s.text, (r.statement_start_offset / 2), (r.statement_end_offset /     2) - (r.statement_start_offset / 2))
        end as statement_text
      , q.query_plan
      , r.cpu_time
      , r.reads as request_reads
      , r.writes as request_writes
      , r.logical_reads as request_logical_reads
from    sys.dm_exec_requests r
        cross apply sys.dm_exec_sql_text(r.sql_handle) s
        cross apply sys.dm_exec_query_plan(r.plan_handle) q

実行されたすべてのクエリが表示されます。

于 2012-10-11T17:47:58.950 に答える