MSSQLSERVER_1205
S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Détails
Attribut | Valeur |
---|---|
Nom du produit | SQL Server |
ID de l’événement | 1205 |
Source de l’événement | MSSQLSERVER |
Composant | SQLEngine |
Nom symbolique | LK_VICTIM |
Texte du message | La transaction (ID de processus %d) a été bloquée sur les ressources %.*ls par un autre processus et a été choisie comme victime. Relancez la transaction. |
Explication
Des ressources font l’objet d’accès dans un ordre conflictuel sur des transactions distinctes, ce qui provoque un interblocage. Par exemple :
-
Transaction1
mises à jourTable1.Row1
, tandis que transaction2 met à jourTable2.Row2
-
Transaction1
tente de mettre à jourTable2.Row2
mais est bloquée, carTransaction2
n’a pas encore validé et n’a pas publié ses verrous - Transaction2 tente maintenant de mettre à jour
Table1.Row1
mais est bloqué, carTransaction1
n’a pas validé et n’a pas libéré ses verrous - Un blocage se produit parce que
Transaction1
attend queTransaction2
se termine, maisTransaction2
attend queTransaction1
se termine.
Le système détecte ce blocage et choisit l’une des transactions impliquées en tant que victime. Il émet ensuite ce message d’erreur, en annulant la transaction de la victime. Pour plus d’informations, consultez Deadlocks.
Action de l’utilisateur
Les blocages sont dans la plupart des cas des problèmes liés à l’application et nécessitent que les développeurs d’applications apportent des modifications de code. Une approche lorsque vous recevez l’erreur 1205 consiste à réexécuter les requêtes. Pour plus d’informations, consultez 'application Deadlock Simulator for Developers : How to Handle a SQL Deadlock issue in Your App.
Vous pouvez également réviser l'application pour éviter les blocages. La transaction choisie en tant que victime peut être retentée et réussira probablement, en fonction des opérations exécutées simultanément.
Pour empêcher ou éviter les blocages de se produire, envisagez d’avoir toutes les lignes d’accès aux transactions dans le même ordre (Table1
, puis Table2
). De cette façon, bien que le blocage puisse se produire, un blocage est évité.
Pour plus d’informations, consultez Gestion des interblocages et réduction des interblocages.