Palautus Transaction SQL Server 2005

SQL Server 2005 vasta intoduced tapa rollback liiketoimien SQL Server 2005

SET XACT_ABORT ON

kun XACT_ABORT on. T-SQL automaattisesti rollback toimen, kun virhe lausunnoissa.

SET XACT_ABORT ON

KÄYTÄ Emp
Aloita Tran
Aseta osaksi EmpInfo Arvot(1)
Aseta osaksi EmpInfo Arvot(1) — Tämä selvitys nostaa perusavaimen virhe
Aseta osaksi EmpInfo Arvot(2)
Commit Tran

Ensimmäinen rivi statment tulee suorittaa ilman virheitä. Perusavain virhe nostaa toisen rivin. Mutta koko korttelin tapahtumaa ei sitoutuneet koska XACT_ABORT sisään.

1 kommenttiin palautus Transaction SQL Server 2005

  • noreply@blogger.com (Todd)

    Huomaa, että XACT_ABORT lopettaa nykyisen * erän *, ei koko komentoa. Erät erotetaan GO avainsanan. Suoritus jatkuu alussa seuraavan erän.

    Tämä toiminto on myös SQL Server 2000, vaikka se käyttäytyy hieman eri tavalla eri virheet.

    SQL 2000, on tapauksia, joissa XACT_ABORT ei rollback liiketoimen automaattisesti.

    Esimerkiksi:

    Laitat ne kelpaa sarakkeen nimeä.

    Lisääminen tulee ensisijainen avain IDENTITY_INSERT OFF.

    Suorittaminen SELECT joka käyttää olematonta UDF.

    Tällaiset virheet johtuvat yleensä huonosti kirjoittanut komennon, joten ne eivät esiinny päivän päivittäisestä toiminnasta ohjelmanne ellei joku muuttaa kaavion. Mutta huomioon niiden mahdollista, kun kirjoittaminen tietokanta päivitys skriptejä, kun käyttöön uuden version projektin, vain siinä tapauksessa käyttöönottoon ei mene suunnitelmien.

    On olemassa tapoja käsitellä näitä virheitä. Sinun COMMIT pitäisi olla erän suorittaa DML lausunnot. Sen jälkeen kun erä (jälkeen GO avainsanan) voit tarkistaa @ @ TRANCOUNT nähdä, jos se on suurempi kuin nolla ja toimia niiden mukaisesti. Yleensä palautus kauppa.

    Taloustoimet voidaan ulottua erissä, joten voit suorittaa rollback myöhemmässä erässä.

Jätä vastaus

Voit käyttää näitä HTML-tagit

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