Mensaje de error al ejecutar la instrucción DBCC CHECKDB en una base de datos que contiene una o más tablas muy grandes en SQL Server: "Tiempo de espera agotado al esperar el pestillo"

Se aplica: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Workgroup Edition

Nº de error: 406938 (SQLBUDT)

Síntomas


Considere el siguiente escenario. Tiene una base de datos que contiene una o más tablas muy grandes. Las tablas son, normalmente, varios cientos gigabytes (GB) de tamaño. Ejecute la instrucción DBCC CHECKDB en la base de datos de Microsoft SQL Server 2005 y versiones posteriores. En este escenario, se escribe un mensaje de error similar al siguiente en el registro de errores de SQL Server:
2005-12-06 02:04:09.41 spid65 tiempo de espera agotado al esperar el pestillo: clase 'DBCC_MULTIOBJECT_SCANNER', 000000002201DED0 id, escriba 4, tarea 0x000000000C80BEB8: 6, waittime 300, indicadores 0xa, propietario de la tarea 0x0000000005A0AC58. Seguir esperando.
Sin embargo, la instrucción DBCC CHECKDB se completará correctamente. Puede ignorar el mensaje de error.

Causa


Este problema se produce debido a un tiempo de espera se produce cuando SQL Server atraviesa las cadenas del mapa de asignación de índices (IAM). El pestillo que se menciona en el mensaje de error se utiliza para evitar que otros subprocesos tengan acceso a una lista. Esta lista se está generando un subproceso que atraviesa las cadenas IAM de todos los índices que están asociados con una tabla dada. Si la tabla es grande bastante que atravesar estas cadenas IAM tarda más de 5 minutos, puede experimentar el tiempo de espera de pestillo. Además, este problema es normalmente peor cuando la E/S de disco es lenta.

Estado


Este comportamiento es por diseño.