SQL Server 2005 intoduced berriki modu SQL Server eragiketa desegin nahi 2005
SET XACT_ABORT ON
denean XACT_ABORT dago. T-SQL instrukzioak automatikoki desegin egingo transakzio error adierazpenak gertatu denean.
SET XACT_ABORT ON
ERABILERA Emp
Hasi Tran
EmpInfo Baloreak sartu Txertatu(1)
EmpInfo Baloreak sartu Txertatu(1) — Adierazpen hori lehen mailako gakoa error goratzen da
EmpInfo Baloreak sartu Txertatu(2)
Entregatu Tran
Statment lehenengo lerroan izango akatsik gabe exekutatu. The lehen mailako gakoa error du bigarren lerroan goratzeko. Baina bloke transakzio osoa ez dira konprometitua buruzko XACT_ABORT delako.
XACT_ABORT hori bukatzen uneko * batch kontuan izan behar duzu *, ez komando osoa. Lote GO hitzarekin bidez bereizten dira. Exekuzio izango da hurrengo batch hasieran jarraitu.
Ezaugarri honek, halaber, SQL Server-en 2000, desberdinean jokatzen du hainbat akatsak nahiz.
SQLn 2000, badaude kasu XACT_ABORT non huts egiten transakzio automatikoki desegin nahi.
Esaterako:
Zutabe izen baliogabea sartu txertatzea.
Lehen mailako gakoa IDENTITY_INSERT OFF sartu txertatzea.
Existitzen ez UDF bat erabiltzen duen SELECT bat exekutatzeak.
Errore mota hauek izan ohi dira gaizki baimena komando bat dela eta, beraz, ez dute egun-eguneko zure programaren funtzionamendua gertatzen norbait eskema aldatzen ez bada behintzat. Baina bere aukera kontuan nuen, datu-basea eguneratzea gidoiak egile proiektua bertsio berri bat zabaltzeko, badaezpada hedatzea ez da aurreikusi bezala.
Badira akats hauek kudeatzeko modu. Zure konpromisoa behar sortako izan DML adierazpenak egitean. Batch ostean (GO keyword ondoren) @@TRANCOUNT egiaztatu ahal izango duzu zero eta horren arabera jokatu baino handiagoa bada ikusteko. Normalean transakzio desegin.
Transactions lote span, beraz, desegin bat exekutatu ahal izango duzu ondorengo lote batean.