1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource (a instância do SQL Server Database Engine não consegue obter um recurso LOCK)
SQL ServerO que significa?
O SQL Server não conseguiu alocar a memória de que o lock manager precisa e não pode criar mais locks. A operação falha porque o pool de memória de locks está esgotado.
Por que acontece?
Locks de granularidade fina (linha/página) demais mantidos ao mesmo tempo: DML grande, sem índice ou em massa; lock escalation impedido; pressão geral de memória no servidor; ou transações abertas de longa duração. Às vezes, a pressão externa de memória é o gatilho.
Como resolver
Divida operações grandes em lotes menores para reduzir o número de locks simultâneos. Use índices adequados para reduzir o número de linhas varridas/bloqueadas. Revise configurações que desabilitam o lock escalation: trace flags 1211/1224 e ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); verifique com SELECT name, lock_escalation_desc FROM sys.tables; e DBCC TRACESTATUS(-1); Verifique a memória do servidor e a configuração max server memory, e alivie a pressão de memória.
Mais entradas deste banco
- 40613Database is not currently available (Azure SQL) (o banco não está disponível no momento)
- 102Incorrect syntax near 'token'
- 8114Error converting data type X to Y
- 3906Failed to update database because the database is read-only (não foi possível atualizar o banco porque ele é somente leitura)
- 15023User already exists in the current database (o usuário já existe no banco atual)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (falha no login; o login vem de um domínio não confiável e não pode ser usado com autenticação do Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (a página lógica solicitada pertence a outra allocation unit)