Partager via


MSSQLSERVER_1205

Nouveau : 17 juillet 2006

Détails

Nom du produit

SQL Server

Version du produit

9.0

Numéro de version

9.00.1281.60

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. Réexécutez la transaction.

Explication

L'accès au ressources s'effectue dans un ordre conflictuel sur des transactions distinctes, ce qui cause un blocage. Exemple :

  • Transaction1 met à jour Table1.Row1, tandis que Transaction2 met à jour Table2.Row2.
  • Transaction1 essaie de mettre à jour Table2.Row2 mais est bloquée car Transaction2 n'est pas encore validée.
  • Transaction2 essaie alors de mettre à jour Table1.Row1 mais est bloquée car Transaction1 n'est pas encore validée.
  • Un blocage survient car Transaction1 attend que Transaction2 se termine, alors que Transaction2 attend que Transaction1 se termine.

Le système détectera ce blocage et choisira l'une des transactions impliquées comme 'victime' et émettra ce message, tout en annulant la transaction de la victime. Pour plus d'informations sur les blocages, consultez Interblocage.

Action utilisateur

Exécutez de nouveau la transaction. Vous pouvez également réviser l'application pour éviter les blocages. La transaction qui a été choisie comme victime peut être retentée et réussira probablement, en fonction des opérations qui sont exécutées simultanément.

Pour empêcher ou éviter l'apparition de blocages, faites en sorte que toutes les transactions accèdent aux lignes dans le même ordre (Table1, puis Table2) ; de cette manière, bien qu'un blocage puisse survenir, aucun interblocage ne se produira. Pour plus d'informations sur les actions à entreprendre, consultez Détection et fin des blocages.