ROLLBACK TRANSACTION dans SQL Server 2005

SQL Server 2005 nouvellement intoduced le chemin de restauration des transactions dans SQL Server 2005

XACT_ABORT SET ON

quand XACT_ABORT est. Les instructions T-SQL sera automatiquement annuler la transaction si erreur s'est produite dans les états.

XACT_ABORT SET ON

UTILISATION Emp
Begin Tran
Insérez-le dans les valeurs EmpInfo(1)
Insérez-le dans les valeurs EmpInfo(1) — Cette déclaration sera soulever l'erreur de clé primaire
Insérez-le dans les valeurs EmpInfo(2)
S'engager Tran

La première ligne de la déclaration va exécuter sans erreur. L'erreur de clé primaire augmentera en deuxième ligne. Mais la transaction de bloc entier ne sera pas engagée en raison de la XACT_ABORT dans le.

1 commentaire à l'annulation de la transaction dans SQL Server 2005

  • noreply@blogger.com (Todd)

    Il faut noter que XACT_ABORT termine le lot courant * *, pas toute la commande. Les lots sont séparés par le mot-clé GO. L'exécution se poursuivra au début de la prochaine fournée.

    Cette fonctionnalité est également dans SQL Server 2000, si elle se comporte de façon légèrement différente pour les divers erreurs.

    Dans SQL 2000, il ya des cas où XACT_ABORT ne parvient pas à annuler la transaction automatiquement.

    Par exemple:

    Insertion dans un nom de colonne non valide.

    Insertion dans une clé primaire avec IDENTITY_INSERT OFF.

    Exécution d'un SELECT qui utilise une inexistante UDF.

    Ces types d'erreurs sont généralement dues à une commande mal rédigé, afin qu'ils ne se produisent pas dans le fonctionnement au jour le jour de votre programme, sauf si quelqu'un modifie le schéma. Mais je tenir compte de leur possibilité lors de la création de scripts de base de données mise à jour lors du déploiement d'une nouvelle version d'un projet, juste au cas de déploiement ne va pas comme prévu.

    Il ya plusieurs façons de traiter ces erreurs. Votre COMMIT doit être dans le lot l'exécution des instructions DML. Après le lot (après le mot clé GO) vous pouvez vérifier la TRANCOUNT @ @ pour voir si elle est supérieure à zéro et agir en conséquence. Habituellement annulation de la transaction.

    Les transactions peuvent lots span, de sorte que vous pouvez exécuter une restauration dans un lot ultérieur.

Laisser un commentaire

Vous pouvez utiliser ces balises HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>