web-dev-qa-db-ja.com

SQL Server2008のタイムアウトエラーの追跡

sQL Server2008インスタンスでストアドプロシージャを実行すると、いくつかの接続タイムアウトが発生しました。しばらくすると、DBは通常どおり動作し始め、追加のタイムアウトエラーは発生しませんでした。

だから私はエラーについての追加情報を取得しようとしています。

SQL Server 2008には、調査できるエラーログがありますか?

エラーを追跡するためにアクティブ化できる監査/ログ機能はありますか(再発した場合)?

4
SDReyes

SQLログを表示するには:Management Studioを介してSQLインスタンスに接続し、オブジェクトブラウザーで[管理]フォルダーを展開し、[SQL Serverログ]フォルダーを展開すると、ログを調べることができます。

デフォルトの動作では、6つのログが保持され、データベースエンジンサーバーが再起動されるたびに新しいログが作成されます。

プロファイラーはいつでも、内部で何が起こっているかを確認するために使用できます。

タイムアウトに関連するメッセージを投稿するかもしれません...

2
jl.

SQL Serverログは、SQL Serverではなくクライアントコードによって生成されるため、アプリケーションのタイムアウトをキャプチャしません。

長時間実行されるクエリをキャプチャするには、SQLプロファイラーを使用する必要があります。 30秒(デフォルトの.NETタイムアウト)を超えるすべてのコマンドをキャプチャするトレースを設定し、何が表示されるかを確認します。

それまたはアプリケーションにコードを入れて、タイムアウトが発生したときに、実行中のクエリと失敗の理由に関するデータをログに記録するようにします。

1
mrdenny

現在選択されている回答は、SQL Serverエラーログの参照について説明しているため、少し誤解を招く可能性があります。これは、特定のシナリオでは役に立ちません。

Mrdennyが非常に正しく指摘しているように.....

SQL Serverへのアプリケーションタイムアウトは、クライアント側からアテンションイベントとして開始され、に記録されません。 SQLServerエラーログ。

以下を使用して、アテンションイベントを監視できます。

0
John Sansom