gpt4 book ai didi

c# - 等待页面的缓冲区闩锁类型 2 时如何修复 SqlException 超时 (1 :37660679), 数据库 ID 10

转载 作者:太空狗 更新时间:2023-10-29 23:24:18 25 4
gpt4 key购买 nike

我正在运行一个应用程序几个小时,然后突然:

SqlException 未被用户代码处理:

Time-out occurred while waiting for buffer latch type 2 for page (1:37660679), database ID 10.

查看异常的详细信息显示它是一个“数字”“845”。 ErrorCode 和 HRESULT -2146232060

问题:如何修复或调试此问题?

  • 我正在运行 ASP.NET C# .NET 4.5 和 SQL Server 2012。

  • 我运行了 chkdsk 但没有发现任何错误。

日志中没有关于 845 事件的信息。这是我在应用程序日志中发现的一些内容(对于事件 ID 847):

Timeout occurred while waiting for latch: class 'FGCB_ADD_REMOVE', id 00000004F146FBD8, type 2, Task 0x00000004F60450C8 : 0, waittime 300 seconds, flags 0x1a, owning task 0x00000004EDC38928. Continuing to wait.

有很多 847 看起来差不多。那么 event-id 为 846 的就更少了:

A time-out occurred while waiting for buffer latch -- type 2, bp 00000004F96EE880, page 1:37660679, stat 0x10b, database id: 10, allocation unit Id: 72057594048544768, task 0x00000004D502E188 : 0, waittime 300 seconds, flags 0x1a, owning task 0x00000004D5316558. Not continuing to wait.

这是 847 事件的 xml View :

- <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();

在监 window 口我可以看到:

db.GetChangeSet() {Inserts: 1, Deletes: 0, Updates: 0} System.Data.Linq.ChangeSet

谷歌搜索显示了一些来自微软的修补程序,但它们仅适用于 SQL Server 2008。

最佳答案

FGCB_ADD_REMOVE 锁存器在您的情况下可能意味着文件由于自动增长而被扩展。这会导致大量等待和 IO 负载。

或者这可能只是一般 IO 过载服务器的症状(由于负载或由于磁盘故障)。是的,这可能只是一种症状,因为您也看到其他 IO 等待超时。

确定服务器磁盘是否过载(例如使用 perfmon)并改善这种情况。

关于c# - 等待页面的缓冲区闩锁类型 2 时如何修复 SqlException 超时 (1 :37660679), 数据库 ID 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com