2

DBA が SQL Server 2000 で実行時間の長いクエリの実行計画を覗く方法はありますか? fn_get_sql() を使用して実行中の SQL を取得する方法を知っています。はい、理論的には、新しい接続を開いて環境フラグを同じに設定すると、SQL に対して同じ計画が生成されるはずです。ただし、私はデータ ウェアハウス環境にいて、このクエリはその間にデータをロードして 12 時間実行されているため、新しい計画が古い計画と一致するという保証はありません。サーバーが何をしているかを正確に知りたいだけです。

いいえ、計画を確認して、インデックスと結合のヒントを使用してより適切に実行できることが確実にわからない限り、現在実行中のステートメントを強制終了するつもりはありません。

更新: 私はとても近いと感じていますが、それでもできると思います. 2K5以降なら確実にできます。syscacheobjects 仮想テーブルを見ると、キャッシュされたプランごとにオブジェクト ID があります。これらの ID で sp_OA* メソッドを呼び出すことはできますが、オブジェクト モデル (独自仕様) の知識がなければ、どこにもたどり着けません。

4

3 に答える 3

1

いいえ、あなたがすることはできません。最善の方法は、クエリ プロセスでDBCC INPUTBUFFERを実行し、最後に実行されたステートメントを確認することです。これをクエリ アナライザーで実行し、実行プランを取得できます。

于 2008-12-10T21:22:08.337 に答える
0

私はあなたがそのようなことをすることができないと思います、それは元のクエリでサーバーに提出される必要があります:

http://msdn.microsoft.com/en-us/library/aa178303(SQL.80).aspx

クエリをロードして、推定実行プランを取得できます。

于 2008-12-10T17:58:16.923 に答える
0

多分...

プロファイラーを実行し、「パフォーマンス」イベント ノードを展開します。SHOWPLAN オプションの 1 つを選択します。

うまくいけば、実行の終わりをトラップすることができます。クエリ プランをログに記録できることは知っていますが、この場合に機能するかどうかはわかりません。

何かをテストしたり、オプションを確認したりするための SQL 2k プロファイラーはなく、2k5 しかありません。

于 2008-12-11T17:53:17.463 に答える