Compartir a través de


Error "Tiempo de espera mientras se espera el bloqueo temporal" al ejecutar DBCC CHECKDB la instrucción en una base de datos

En este artículo se presenta un problema en el que recibe un mensaje de error al intentar ejecutar la DBCC CHECKDB instrucción en una base de datos que contiene una tabla grande en SQL Server.

Versión del producto original: SQL Server
Número de KB original: 919155

Síntomas

Considere el caso siguiente:

  • Tiene una base de datos que contiene una o varias tablas muy grandes.
  • Las tablas suelen tener un tamaño de varios cientos de gigabytes (GB).
  • Ejecute la DBCC CHECKDB instrucción en la base de datos en SQL Server.

En este escenario, se escribe un mensaje de error similar al siguiente en el registro de errores de SQL Server:

<DateTime> spid65 Timeout se produjo mientras se esperaba el bloqueo temporal: clase "DBCC_MULTIOBJECT_SCANNER", id 000000002201DED0, tipo 4, Task 0x000000000C80BEB8 : 6, waittime 300, flags 0xa, propietario de la tarea 0x0000000005A0AC58. Esperando.

Sin embargo, la DBCC CHECKDB instrucción se completará correctamente. Puede omitir el mensaje de error de forma segura.

Causa

Este problema se produce porque se produce un tiempo de espera cuando SQL Server atraviesa las cadenas del mapa de asignación de índices (IAM). El bloqueo temporal que se menciona en el mensaje de error se usa para evitar que otros subprocesos accedan a una lista. Esta lista se está compilando mediante un subproceso que atraviesa las cadenas de IAM para todos los índices asociados a una tabla determinada. Si la tabla es lo suficientemente grande como para recorrer estas cadenas de IAM tarda más de 5 minutos, puede experimentar el tiempo de espera de bloqueo temporal. Además, este problema suele ser peor cuando la E/S del disco es lenta.

Estado

Este comportamiento es por diseño.