Compartir a través de


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.