MSSQLSERVER_1205
Detalles
Nombre del producto |
SQL Server |
Versión del producto |
10.0 |
Número de compilación del producto |
10.00.0000.00 |
Id. de evento |
1205 |
Origen del evento |
MSSQLSERVER |
Componente |
SQLEngine |
Nombre simbólico |
LK_VICTIM |
Texto del mensaje |
La transacción (Id. de proceso %d) quedó en interbloqueo en %.*ls recursos con otro proceso y fue elegida como sujeto del interbloqueo. Ejecute de nuevo la transacción. |
Explicación
El acceso a los recursos se realiza en un orden conflictivo en transacciones independientes, lo que causa un interbloqueo. Por ejemplo:
Transacción1 actualiza Tabla1.Fila1, mientras que Transacción2 actualiza Tabla2.Fila2.
Transacción1 intenta actualizar Tabla2.Fila2, pero es bloqueada porque Transacción2 todavía no se ha confirmado.
Transacción2 ahora intenta actualizar Tabla1.Fila1, pero es bloqueada porque Transacción1 no se ha confirmado.
Se produce un interbloqueo porque Transacción1 está esperando a que Transacción2 finalice, pero Transacción2 está esperando a que finalice Transacción1.
El sistema detectará este interbloqueo y elegirá una de las transacciones implicadas como "víctima". Emitirá este mensaje y la transacción de la víctima se revertirá. Para obtener más información acerca de los interbloqueos, consulte Interbloqueos.
Acción del usuario
Ejecute de nuevo la transacción. También puede revisar la aplicación para evitar los interbloqueos. La transacción elegida como víctima se puede volver a intentar y probablemente se realizará correctamente, en función de qué operaciones se estén ejecutando simultáneamente.
Para evitar los interbloqueos, considere la posibilidad de hacer que todas las transacciones tengan acceso a las filas en el mismo orden (Tabla1, luego Tabla2); de esta forma, aunque se pueden producir bloqueos, no se producirán interbloqueos. Para obtener más información acerca de las acciones que se deben realizar, vea Detectar y finalizar interbloqueos.