Tranzacţie RollBack în SQL Server 2005

SQL Server 2005 instaurat nou mod de a rollback tranzacţiile în SQL Server 2005

SET XACT_ABORT PE

atunci când este pe XACT_ABORT. Declaraţiile T-SQL va rollback automat atunci când tranzacţia eroare în declaraţii.

SET XACT_ABORT PE

UTILIZAREA emp
Inceput Tran
Introduceţi în Valori EmpInfo(1)
Introduceţi în Valori EmpInfo(1) — Această declaraţie va ridica eroare de cheie primară
Introduceţi în Valori EmpInfo(2)
Commit Tran

Prima linie a statment va executa fără erori. Eroarea de cheie primară va creşte în al doilea rând. Dar tranzacţia întregului bloc nu va fi angajat, deoarece în XACT_ABORT pe.

1 comentariu pentru tranzacţii RollBack în SQL Server 2005

  • noreply@blogger.com (Todd)

    Trebuie să reţineţi că XACT_ABORT termină actualul lot * *, nu întreaga comanda. Loturile sunt separate cu cuvinte cheie GO. Executia va continua la începutul lot.

    Această caracteristică este, de asemenea, în SQL Server 2000, deşi se comportă puţin diferit pentru diferite erori.

    În SQL 2000, există cazuri în care nu reuşeşte să XACT_ABORT rollback tranzacţiei în mod automat.

    De exemplu:

    Introducerea într-un nume de coloană nevalid.

    Introducerea într-o cheie primară cu IDENTITY_INSERT OFF.

    Executarea un SELECT care utilizează un UDF inexistent.

    Aceste tipuri de erori sunt, de obicei, din cauza la o comandă slab autor, astfel încât acestea nu apar în funcţionarea de zi cu zi a programului excepţia cazului în care cineva modifică schema. Dar eu contul pentru posibilitatea lor de autor atunci când script-actualizarea bazei de date atunci când utilizaţi o versiune nouă a unui proiect, doar în cazul în desfăşurare nu merge cum a fost planificat.

    Există modalităţi de a se ocupe de aceste erori. COMMIT dvs. ar trebui să fie în lot efectuarea declaraţiile DML. După lot (după cuvântul cheie GO) puteţi verifica @ @ TRANCOUNT pentru a vedea dacă acesta este mai mare decât zero, şi să acţioneze în consecinţă. ROLLBACK, de obicei, tranzacţia.

    Tranzacţiile se pot întinde loturi, astfel încât să puteţi executa o retroactivitate într-un lot ulterior.

Plecare un Reply

Puteţi utiliza aceste tag-uri HTML

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