Rollback transakce v SQL Server 2005

SQL Server 2005 Nově zavedený způsob, jak rollback transakce v SQL Server 2005

SET NA XACT_ABORT

pokud je na XACT_ABORT. T-SQL automaticky rollback transakce, kdy došlo k chybě ve výkazech.

SET NA XACT_ABORT

POUŽITÍ EMP
BEGIN TRAN
Vložit do EmpInfo hodnoty(1)
Vložit do EmpInfo hodnoty(1) — Toto prohlášení zvýší primární klíč chybu
Vložit do EmpInfo hodnoty(2)
Commit Tran

První řádek statment provede bez chyb. Primární klíč chyba zvýší ve druhé řadě. Ale celý blok transakce nebude, protože se dopustil v XACT_ABORT na.

1 komentář k použití předposlední transakce v SQL Server 2005

  • noreply@blogger.com (Todd)

    Měli byste vědět, že XACT_ABORT ukončí aktuální * Dávkový *, ne celý příkaz. Dávky jsou odděleny GO klíčového slova. Provedení bude pokračovat na začátku příštího šarže.

    Tato funkce je v SQL Server 2000, i když se chová trochu jinak pro různé chyby.

    V SQL 2000, existují případy, kdy XACT_ABORT nedokáže rollback transakce automaticky.

    Například:

    Vložení do neplatným názvu sloupce.

    Vložení do primárního klíče s IDENTITY_INSERT OFF.

    Provádění SELECT, který používá neexistující UDF.

    Tyto typy chyb jsou obvykle důsledkem špatně autorem příkazu, takže se nevyskytují v den-to-day provoz vašeho programu, pokud někdo změní schéma. Ale já s přihlédnutím k jejich možností, kdy autorské skripty aktualizaci databáze při nasazení nové verze projektu, jen v případě nasazení nejde podle plánu.

    Existují způsoby, jak zvládnout tyto chyby. Váš COMMIT by měl být v dávce poskytujícího DML příkazy. Po dávce (po GO klíčového slova) můžete zkontrolovat @ @ TRANCOUNT, zda je větší než nula a podle toho jednat. Obvykle ROLLBACK transakce.

    Transakce může zahrnovat dávky, takže je můžete provést na vrácení zpět do následné dávky.

Dovolená jeden Namítat

Můžete použít tyto HTML tagy

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