SQL Server 2005 rishtas intoduced rrugën për të riktheje transaksionet ne SQL Server 2005
SET XACT_ABORT ON
kur XACT_ABORT është në. Deklaratat T-SQL automatikisht do të riktheje transaksionin kur gabim ndodhi në deklaratat.
SET XACT_ABORT ON
PËRDORIMI Emp
Filloni Tran
Fut në Vlerave EmpInfo(1)
Fut në Vlerave EmpInfo(1) — Kjo deklaratë do të rrisë gabim primare kyçe
Fut në Vlerave EmpInfo(2)
Commit Tran
Linja e parë e DEKLARATA do të zbatoj pa ndonjë gabim. Gabimi kryesor kyç do të rrisë në rreshtin e dytë. Por i gjithë transaksioni bllok nuk do të jetë i angazhuar për shkak të XACT_ABORT në mbi.
Ju duhet të kini parasysh se XACT_ABORT përfundon tanishme * grumbull *, jo të gjithë komandës. Tufa janë të ndara me fjalen GO. Ekzekutimi do të vazhdojë në fillim të serisë së ardhshme.
Ky tipar është gjithashtu në SQL Server 2000, edhe pse ajo sillet pak më ndryshe për gabime të ndryshme.
Në SQL 2000, ka raste ku XACT_ABORT dështon të riktheje transaksionin automatikisht.
Për shembull:
Duke futur në një emër të pavlefshme kolonë.
Duke futur në një kyç primar me IDENTITY_INSERT OFF.
Ekzekutimin e një SELECT që përdor një UDF jo-ekzistente.
Këto lloje të gabimeve janë zakonisht për shkak të një komandë autor dobët, kështu që ata nuk do të ndodhë në të ditë-për-ditë funksionimin e programit tuaj nëse dikush ndryshon skemë. Por unë llogari për mundësinë e tyre kur authoring bazës së të dhënave përditësimin Scripts kur vendosjen e një version të ri të një projekti, vetëm në rast dislokimi nuk shkon siç është planifikuar.
Ka mënyra për të trajtuar këto gabime. COMMIT juaj duhet të jetë në grumbull kryerjen deklaratat DML. Pas grumbull (pas fjalen GO) ju mund të kontrolloni@@TRANCOUNT për të parë nëse është më i madh se zero dhe të veprojnë në përputhje me rrethanat. Zakonisht riktheje transaksionin.
Transaksionet mund span tufa, kështu që ju mund të ekzekutojë një riktheje në një grumbull të mëvonshëm.