1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource (la instancia de SQL Server Database Engine no puede obtener un recurso LOCK)
SQL Server¿Qué significa?
SQL Server no pudo asignar la memoria que necesita el lock manager y no puede crear más bloqueos. La operación falla porque el pool de memoria de bloqueos está agotado.
¿Por qué ocurre?
Demasiados bloqueos de grano fino (fila/página) mantenidos a la vez: DML grande, sin índices o masivo; lock escalation impedida; presión general de memoria en el servidor; o transacciones abiertas de larga duración. En ocasiones el desencadenante es la presión de memoria externa.
Cómo solucionarlo
Divida las operaciones grandes en lotes más pequeños para reducir el número de bloqueos concurrentes. Use índices adecuados para reducir el número de filas recorridas/bloqueadas. Revise las configuraciones que deshabilitan la lock escalation: trace flags 1211/1224 y ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); compruébelo con SELECT name, lock_escalation_desc FROM sys.tables; y DBCC TRACESTATUS(-1); Revise la memoria del servidor y el ajuste max server memory, y alivie la presión de memoria.
Más entradas de este motor
- 40613Database is not currently available (Azure SQL) (la base de datos no está disponible en este momento)
- 102Incorrect syntax near 'token'
- 8114Error converting data type X to Y
- 3906Failed to update database because the database is read-only (no se pudo actualizar la base de datos porque es de solo lectura)
- 15023User already exists in the current database (el usuario ya existe en la base de datos actual)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (error de login; el login procede de un dominio no confiable y no puede usarse con autenticación de Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (la página lógica solicitada pertenece a otra allocation unit)