1205: Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim (la transacción quedó en deadlock y fue elegida como víctima)
SQL Server¿Qué significa?
Dos o más transacciones esperan cada una bloqueos que mantiene la otra (un deadlock). Para romper el ciclo, SQL Server elige una transacción como víctima y la revierte.
¿Por qué ocurre?
Las causas típicas son transacciones que bloquean tablas/filas en distinto orden, transacciones de larga duración, recorridos amplios por falta de índices, lock escalation y alta concurrencia.
Cómo solucionarlo
Capture el error 1205 en la aplicación y reintente la transacción automáticamente. Acceda a los objetos en el mismo orden en todas las transacciones y mantenga las transacciones cortas. Examine el grafo de deadlock: use Extended Events (la sesión system_health) o el trace flag 1222 para más detalles. Añada índices adecuados para reducir recorridos y bloqueos. Si es necesario, evalúe el nivel de aislamiento READ COMMITTED SNAPSHOT (RCSI).
Más entradas de este motor
- 2627Violation of PRIMARY KEY / UNIQUE KEY constraint. Cannot insert duplicate key in object (violación de restricción PRIMARY KEY / UNIQUE KEY; clave duplicada)
- 2601Cannot insert duplicate key row in object with unique index. The duplicate key value is ... (fila con clave duplicada en un índice único)
- 547The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint (la sentencia entró en conflicto con la restricción FOREIGN KEY / CHECK)
- 18456Login failed for user (error de inicio de sesión del usuario)