codeDB
EntrarTestar 7 dias grátis
Erros

Erro 1222 no SQL Server: "Lock request time out period exceeded"

26 de agosto de 2026 · 4 min de leitura

Mensagem completa: "Lock request time out period exceeded." — Msg 1222, Level 16.

Não é a mesma coisa que deadlock

O erro 1205 (deadlock) acontece quando duas sessões travam um ciclo e uma é escolhida como vítima automaticamente. O 1222 é mais simples: a sessão pediu um lock, esperou mais do que o LOCK_TIMEOUT configurado (via SET LOCK_TIMEOUT, em milissegundos) e desistiu — sem ciclo, sem vítima escolhida pelo motor. Se LOCK_TIMEOUT nunca foi configurado explicitamente, o padrão é esperar indefinidamente (-1), então esse erro só aparece quando alguém setou um limite.

Onde investigar

SELECT
  r.session_id, r.blocking_session_id, r.wait_type, r.wait_time
FROM sys.dm_exec_requests r
WHERE r.blocking_session_id <> 0
ORDER BY r.wait_time DESC;

Se a sessão que recebeu o 1222 aparece bloqueada por outra na consulta acima, o próximo passo é o mesmo de qualquer blocking: achar a sessão raiz e entender por que ela está segurando o lock.

Causas mais comuns

  • LOCK_TIMEOUT configurado baixo demais pra uma operação que legitimamente compete por lock em horário de pico.
  • Sessão bloqueadora com transação longa aberta (mesma causa raiz de blocking comum).
  • Aplicação usando LOCK_TIMEOUT como substituto de retry — mascarando um problema de contenção que devia ser resolvido, não só tolerado.
Guia completo: Bloqueios (blocking) — causas e como resolver →

Artigos relacionados

Monitore seu SQL Server enquanto aprende.

7 dias grátis para aplicar tudo que você aprendeu aqui no seu próprio ambiente.

Começar gratuitamente