Partager via


Durées de vie des transactions

S’applique à : SQL Server

Il existe une différence importante entre les transactions démarrées dans les procédures stockées Transact-SQL et celles démarrées dans le code managé : le code CLR (Common Language Runtime) ne peut pas déséquilibrer l’état de transaction lors de l’entrée ou de la sortie d’un appel CLR. Soyez conscient des implications d'une telle différence :

  • Une transaction démarrée à l’intérieur d’une trame CLR doit être validée ou restaurée, ou sql Server génère une erreur lors de la sortie de l’image.

  • Une transaction externe ne peut pas être validée ni annulée au sein du code CLR.

  • Une tentative de validation d'une transaction non démarrée dans la même procédure provoque une erreur d'exécution.

  • Une tentative de restauration d’une transaction non démarrée dans la même procédure entraîne l’arrêt de la réponse de la transaction (empêchant toute autre opération d’effet secondaire de se produire). La transaction cesse jusqu'à ce que le code CLR soit hors de portée. Notez que cela peut être utile lorsque vous détectez une erreur à l'intérieur de votre procédure et souhaitez vous assurer que la transaction entière se termine.

Voir aussi

Intégration et transactions du CLR