2009-03-20 16 views
2

SQL Server 2000の特定のデータベースでストアドプロシージャの使用データを取得する最適な方法は何ですか?SQL Server 2000のストアドプロシージャ使用データの取得

私は必要なデータは次のとおりです。すべてのストアドプロシージャの

  1. 合計は、Xの時間をかけて、それぞれ固有のストアドプロシージャ呼び出しの
  2. Xの時間をかけて合計を呼び出します。
  3. X時間にわたってすべてのストアドプロシージャを処理するのに費やした合計時間。
  4. X回以上の特定のストアドプロシージャの処理に費やされた合計時間。

私の最初の勘違いは、SQLプロファイラがこのデータを収集するためのフィルタ群をセットアップすることでした。私がこのソリューションについて気に入らないのは、データがどこかのファイルやテーブルに書き込まれなければならないということです。必要な結果を得るためには、数値計算を行う必要があります。その変更がどのようにデータベースに影響を与えているかを見るために変更を適用すると、私は何日もの間にこれらの結果を得ることも望みます。

SQLプロファイラを実行するためにサーバーに直接アクセスできないため、トレーステンプレートファイルを作成してDBAに送信し、X時間以上実行して結果を返す必要があります。

私が必要とするデータを得るためのよりよい解決法はありますか?可能であれば、より多くのデータを取得したいと思いますが、上記のデータは現在のニーズには十分であり、これに費やす時間はあまりありません。

編集:私が望む統計情報を与えるためにプロファイルが作成するトレースファイルで動作する推奨ツールがいくつかありますか?私が見

答えて

2

つのオプション:再スクリプト

  1. およびロギングSPROCを呼び出すために、あなたのストアドプロシージャを再コンパイルします。そのsprocはperf追跡をしたいすべてのsprocsによって呼び出されるでしょう。 sproc名、現在の日時、その他のものをテーブルに書き込みます。 Pro:簡単に元に戻すことができるスクリプトであなたのsprocsのコピーを持っているので、簡単に元に戻すことができます。簡単にクエリ可能! Con:ゲージしようとしているsprocsの実行ごとにパフォーマンスが低下します。

  2. 各sproc呼び出しの開始時と終了時にログテキストファイルに書き込むコードでデータアクセス層を再コンパイルします。このロギングコードを1つの場所に挿入できる単一のクラスからDALを継承していますか? Pro:DBの煩わしさがなく、このパーフォレーション測定を停止したいときに、アセンブリを切り替えて切り替えることができます。 app.configのon/offで調整することもできます。 Con:ディスクI/O。

-1

おそらく、SQLプロファイラの外でSQL Serverトレースを作成すると役立つかもしれません。

http://support.microsoft.com/kb/283790

このソリューションは、すべてのトレースオプションを持つテキストファイルを作成する必要があります。出力はテキストファイルに入れられます。おそらく、ログテーブルにダンプするように変更することができます。

トレースの監視:http://support.microsoft.com/kb/283786/EN-US/

関連する問題