Dynamics AXアプリケーションのパフォーマンスチューニングを行っており、SQLトレースでexec sp_cursorexecute 1073742882 ...
という形式の長時間実行されている高I/Oクエリを確認します。新しいSQL Management Studioウィンドウでそのクエリを実行すると、エラーが発生しますCould not find prepared statement with handle 1073742882.
わかりませんが、キャッシュされたプランは接続固有のもののようです。トレースにsp_cursorprepare
がありません。ユースケースを繰り返すと、新しいカーソルで同じ準備済みハンドルIDが表示されます。これは私が接続している共有環境なので、アプリサーバーをリセットして、起動をトレースして確認する必要があると思います。
dm_exec_cached_plans
の行をこのカーソルに関連付ける方法はありますか?dm_exec_query_plan
またはその他の方法で実行プランを確認する方法はありますか?SQL2000以降、つまりDMVより前の日から、カーソルのアクティビティを追跡する必要はありませんでした。古い方法はまだ実行可能であり、プロファイラーを使用して、実行計画をトレースに含めます。
プランがsp_cursorexecute呼び出しに含まれるかどうか、またはトレースに戻ってハンドルに関連付けられたsp_cursorprepexecまたはsp_cursorprepareイベントを見つける必要があるかどうか、私は思い出せません。