Treinamento SQL Server
Módulo 37 — Deadlocks: Casos Reais & Troubleshooting
Captura, leitura de grafos e estratégias de prevenção/recuperação.
T-SQL
Nível Avançado
Hands-on
Atualizado: 28 ago 2025
1) Capturando Deadlocks (XE)
CREATE EVENT SESSION Deadlocks ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.event_file(SET filename='D:\\xe\\deadlocks.xel');
2) Lendo o Deadlock Graph
- Identifique nós (processos/recursos) e arestas (esperas).
3) Padrões Comuns (Conversão/Range)
- S→X (Update) e range locks em SERIALIZABLE.
4) Prevenção & Ordem de Acesso
- Acesse recursos na mesma ordem (A→B→C) em todas as transações.
5) Técnicas (UPDLOCK, HOLDLOCK, AppLocks)
EXEC sp_getapplock @Resource='pedido-123', @LockMode='Exclusive';
6) Retentativas & Backoff
-- Loop com TRY/CATCH para ERROR_NUMBER()=1205
7) Laboratório
-- Simular deadlock conversão S→X e resolver com UPDLOCK.
8) Exercícios
- Reproduzir deadlock de range e resolver.
9) Gabarito
SET DEADLOCK_PRIORITY LOW;
10) Checklist
- Transações curtas; ordene recursos; monitore XE.
11) Próximos Passos
- Power BI + SQL para relatórios eficientes.