Rollback transakcie v SQL Server 2005

SQL Server 2005 Novo zavedený spôsob, ako rollback transakcie v SQL Server 2005

SET XACT_ABORT ON

keď je na XACT_ABORT. V T-SQL automaticky rollback transakcie, kedy chyba v účtovnej závierke.

SET XACT_ABORT ON

POUŽITIE EMP
BEGIN TRAN
Vložiť do EmpInfo hodnôt(1)
Vložiť do EmpInfo hodnôt(1) — Toto vyhlásenie zvýši primárny kľúč chybu
Vložiť do EmpInfo hodnôt(2)
Commit Tran

Prvý riadok statment vykoná bez chýb. Primárny kľúč chyba zvýši v druhom rade. Ale celý blok transakcie nebude, pretože sa dopustil v XACT_ABORT na.

1 komentár na použitie predposledný transakcie v SQL Server 2005

  • noreply@blogger.com (Todd)

    Mali by ste vedieť, že XACT_ABORT ukončí aktuálnu * Dávkový *, nie celý príkaz. Dávky sú oddelené GO kľúčového slova. Prevedenie bude pokračovať na začiatku budúceho šarže.

    Táto funkcia je v SQL Server 2000, aj keď sa chová trochu inak pre rôzne chyby.

    V SQL 2000, existujú prípady, keď XACT_ABORT nedokáže rollback transakcie automaticky.

    Napríklad:

    Vloženie do neplatným názvu stĺpca.

    Vloženie do primárneho kľúča s IDENTITY_INSERT OFF.

    Vykonávanie SELECT, ktorý používa neexistujúce UDF.

    Tieto typy chýb sú zvyčajne dôsledkom zle autorom príkazu, takže sa nevyskytujú v deň-to-day prevádzku vášho programu, ak niekto zmení schéma. Ale ja s prihliadnutím na ich možností, kedy autorské skripty aktualizáciu databázy pri nasadení novej verzie projektu, len v prípade nasadenia nejde podľa plánu.

    Existujú spôsoby, ako zvládnuť tieto chyby. Váš COMMIT by mal byť v dávke poskytujúceho DML príkazy. Po dávke (po GO kľúčového slova) môžete skontrolovať @ @ TRANCOUNT, či je väčšia ako nula a podľa toho konať. Obvykle ROLLBACK transakcie.

    Transakcia môže zahŕňať dávky, takže ich môžete previesť na vrátenie späť do následné dávky.

Required

Môžete použiť tieto HTML tagy

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