アプリケーションを数時間実行していたところ、突然次のようになりました。
SqlException はユーザー コードによって処理されませんでした:
ページ (1:37660679)、データベース ID 10 のバッファー ラッチ タイプ 2 を待機中にタイムアウトが発生しました。
例外の詳細を表示すると、「Number」「845」であることがわかります。ErrorCode と HRESULT -2146232060
質問: この問題を修正またはデバッグするにはどうすればよいですか?
ASP.NET C# .NET 4.5 と SQL Server 2012 を実行しています。
chkdsk を実行しましたが、エラーは見つかりませんでした。
ログには 845 イベントに関するものは何もありません。アプリケーション ログで見つけたものの一部を次に示します (イベント ID 847 の場合)。
ラッチの待機中にタイムアウトが発生しました: クラス 'FGCB_ADD_REMOVE'、id 00000004F146FBD8、タイプ 2、タスク 0x00000004F60450C8: 0、待機時間 300 秒、フラグ 0x1a、所有タスク 0x00000004EDC38928。待ち続けます。
同じように見える 847 がたくさんあります。次に、イベント ID 846 のイベントははるかに少なくなります。
バッファ ラッチの待機中にタイムアウトが発生しました -- タイプ 2、bp 00000004F96EE880、ページ 1:37660679、統計 0x10b、データベース ID: 10、アロケーション ユニット ID: 72057594048544768、タスク 0x00000004D502E188: 0、待機時間 300 秒、0x1a を所有するフラグタスク 0x00000004D5316558。待ち続けない。
847 イベントの xml ビューを次に示します。
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="MSSQLSERVER" />
<EventID Qualifiers="16384">847</EventID>
<Level>4</Level>
<Task>2</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2013-02-24T19:21:54.000000000Z" />
<EventRecordID>281870</EventRecordID>
<Channel>Application</Channel>
<Computer>xyz-PC</Computer>
<Security UserID="S-1-and-so-on" />
</System>
- <EventData>
<Data>FGCB_ADD_REMOVE</Data>
<Data>00000004F146FBD8</Data>
<Data>2</Data>
<Data>00000004D5316188</Data>
<Data>0</Data>
<Data>1200</Data>
<Data>1a</Data>
<Data>00000004EDC38928</Data>
<Binary>4F0300000A00000006000000540053002D005000430000000800000053006300680061006200650072000000</Binary>
</EventData>
</Event>
行でエラーが発生しました
db.SubmitChanges();
ウォッチウィンドウで私は見ることができます:
db.GetChangeSet() {Inserts: 1, Deletes: 0, Updates: 0} System.Data.Linq.ChangeSet
グーグルはマイクロソフトからいくつかのホットフィックスを表示しますが、それらはSQLサーバー2008専用です.