2016-07-26 3 views
2

SQL Server 2014の使用:システムに2つの重要なストアドプロシージャがあり、 ストアドプロシージャがロックを待機する時間が懸念されます。SQL Server 2014:ストアドプロシージャがロックを待機する時間

ストアドプロシージャの最後にロック待機時間がどのくらいあるかを調べ、特定のしきい値を超えている場合は、アプリケーションログエントリを作成して記録します。

システムテーブルに別のクエリオーバーヘッドを課すことなく、ストアドプロシージャでこれまでのロック待機時間を確認する実践的な方法(@@SystemVariablesのようなもの)がありますか?

答えて

2

blocked process threshold eventを有効にすることをおすすめします。有効にすると、プロセスが設定されたしきい値より長く他のプロセスをブロックしている場合、タイプBlocked Process Reportのイベントがトリガーされます。これは、あなたが求めているものよりも優れている:

  • 長い待ち時間が発生した場合、それだけではなく、トリガ、それはまた、あなたのがイベントとして長い待機
  • を引き起こしているを示し、それがアクションをトリガーすることができます(たとえば、 。 メールを送る)。このイベントの使用方法については、Understanding Event Notificationを参照してください。
  • 手順でコードを変更する必要はありません。
+0

私はSQLモニタリングサービスでこのイベントのサポートを追加しています。http://DBHistory.com –

+0

イベントの使用は良い考えです。しかし、本番環境では私はサーバーにアクセスできません。私はデータベースへのDBOのアクセスしか持っていないので、それを変更することはできません。だからこそ、私はデータベース内に必要なものすべてを手に入れた設計を考え出す必要があります。サーバーレベルのアクセスは私の選択肢ではありません。 –

+0

イベントを使用できない場合は、['sys.dm_exec_session_wait_stats'](https://msdn.microsoft.com/en-us/library/mt282433.aspx)を使用することをお勧めします。これにより、ロック待機時間の増加を現在のセッション。 SQL Server 2016が必要です。 –

関連する問題