Durées de vie des transactions
S'applique à :SQL Server
Il existe une différence importante entre les transactions démarrées dans Transact-SQL procédures stockées et les transactions démarrées dans le code managé : le code CLR (Common Language Runtime) ne peut pas déséquilibrage de 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 ou restaurée à l’intérieur 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. Ce comportement peut être utile lorsque vous détectez une erreur à l’intérieur de votre procédure et que vous souhaitez vous assurer que l’ensemble de la transaction se termine.