Fehlermeldung, wenn Sie der DBCC CHECKDB-Anweisung für eine Datenbank ausführen enthält eine oder mehrere große Tabellen in SQL Server: "Trat Latch"

Gilt für: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Workgroup Edition

Fehler #: 406938 (SQLBUDT)

Problembeschreibung


Das folgende Szenario. Sie haben eine Datenbank, die eine oder mehrere große Tabellen enthält. Die Tabellen sind in der Regel mehrere hundert Gigabyte (GB) Größe. Ausführen die DBCC CHECKDB-Anweisung für die Datenbank in Microsoft SQL Server 2005 und höher. In diesem Szenario wird eine Fehlermeldung angezeigt, die der folgenden ähnelt der SQL Server-Fehlerprotokoll geschrieben:
2005-12-06 02:04:09.41 spid65 trat Latch: DBCC_MULTIOBJECT_SCANNER, Id 000000002201DED0 Klasse Typ 4 Task 0x000000000C80BEB8: 6 Wartezeit 300 flags 0xa Aufgabe 0x0000000005A0AC58 besitzen. Weiter zu warten.
Allerdings wird die DBCC CHECKDB-Anweisung erfolgreich abgeschlossen. Sie können die Fehlermeldung ignorieren.

Ursache


Dieses Problem tritt auf, weil ein Timeout auftritt, wenn SQL Server die Index Allocation Map (IAM) Ketten durchläuft. Die Verriegelung in der Fehlermeldung genannten wird verhindern, dass andere Threads auf eine Liste verwendet. Dieser Liste wird von einem Thread erstellt, die IAM-Ketten für alle Indizes herzustellen, der einer Tabelle zugeordnet sind. Ist die Tabelle groß genug, durchlaufen diese IAM-Ketten mehr als 5 Minuten, Riegel Timeout auftreten. Darüber hinaus wird dieses Problem in der Regel schlechter Festplatte langsam ist.

Status


Dieses Verhalten ist entwurfsbedingt.