Error message when you run the DBCC CHECKDB statement on a database that contains one or more very large tables in SQL Server: "Timeout occurred while waiting for latch"

Applies to: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Workgroup Edition

Bug #: 406938 (SQLBUDT)


Consider the following scenario. You have a database that contains one or more very large tables. The tables are typically several hundred gigabytes (GB) in size. You run the DBCC CHECKDB statement on the database in Microsoft SQL Server 2005 and later versions. In this scenario, an error message that resembles the following is written to the SQL Server error log: 
2005-12-06 02:04:09.41 spid65 Timeout occurred while waiting for latch: class 'DBCC_MULTIOBJECT_SCANNER', id 000000002201DED0, type 4, Task 0x000000000C80BEB8 : 6, waittime 300, flags 0xa, owning task 0x0000000005A0AC58. Continuing to wait.
However, the DBCC CHECKDB statement will complete successfully. You can safely ignore the error message.


This issue occurs because a time-out occurs when SQL Server traverses the Index Allocation Map (IAM) chains. The latch that is mentioned in the error message is used to prevent other threads from accessing a list. This list is being built by a thread that traverses the IAM chains for all indexes that are associated with a given table. If the table is large enough that traversing these IAM chains takes more than 5 minutes, you may experience the latch time-out. Additionally, this issue is typically worse when disk I/O is slow.


This behavior is by design.