Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
Detalles
| Attribute | Valor |
|---|---|
| Nombre del producto | SQL Server |
| Id. de evento | 1205 |
| Origen de eventos | 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. Vuelva a ejecutar la transacción. |
Explicación
El orden en el que se accede a los recursos en transacciones independientes es conflictivo y provoca un interbloqueo. Por ejemplo:
-
Transaction1actualizaTable1.Row1, mientras que las actualizaciones de Transaction2Table2.Row2 -
Transaction1intenta actualizarTable2.Row2pero está bloqueado porqueTransaction2aún no se ha confirmado y no ha liberado sus bloqueos - Transaction2 ahora intenta actualizar
Table1.Row1pero está bloqueado porqueTransaction1no se ha confirmado y no ha liberado sus bloqueos - Se produce un interbloqueo porque
Transaction1espera a que se completeTransaction2, peroTransaction2está esperando a que se completeTransaction1.
El sistema detecta este interbloqueo y elige una de las transacciones implicadas como víctima de . A continuación, emite este mensaje de error, lo que revierte la transacción de la víctima. Para obtener información detallada, consulte Interbloqueos.
Acción de usuario
Los interbloqueos están en la mayoría de los casos problemas relacionados con la aplicación y requieren que los desarrolladores de aplicaciones realicen cambios en el código. Un enfoque cuando recibe el error 1205 es volver a ejecutar las consultas. Para obtener más información, vea aplicación de simulador de interbloqueo para desarrolladores: Cómo controlar un problema de interbloqueo de SQL en La aplicación.
También puede revisar la aplicación para evitar los interbloqueos. La transacción elegida como víctima se puede reintentar y probablemente se realice correctamente, en función de las operaciones que se ejecuten simultáneamente.
Para evitar que se produzcan interbloqueos, considere la posibilidad de que todas las transacciones accedan a filas en el mismo orden (Table1y, a continuación, Table2). De este modo, aunque puede producirse un bloqueo, se evita un interbloqueo.
Para obtener más información, consulte Control de interbloqueos y Minimización de interbloqueos.