SQL Server 2005 wapya intoduced njia ya avvecklingen shughuli katika SQL Server 2005
SET XACT_ABORT ILIYO
wakati XACT_ABORT ni juu ya. T-SQL taarifa moja kwa moja shughuli avvecklingen wakati Shida ilitokea katika taarifa.
SET XACT_ABORT ILIYO
KUTUMIA EMP
Anza Tran
Insert ndani ya Maadili EmpInfo(1)
Insert ndani ya Maadili EmpInfo(1) — Kauli hii itaongeza msingi muhimu kosa
Insert ndani ya Maadili EmpInfo(2)
Kufanya Tran
mstari wa kwanza wa taarifa nitafanya bila makosa yoyote. msingi muhimu kosa itaongeza katika mstari wa pili. Lakini kuzuia shughuli nzima si kosa kwa sababu XACT_ABORT katika juu ya.
Ni lazima kutambua kwamba XACT_ABORT vipoe sasa kundi * *, si amri nzima. Batches ni kutengwa na keyword GO. Utekelezaji itaendelea mwanzo wa kundi ijayo.
Jambo hili pia katika SQL Server 2000, ingawa ina tabia kidogo tofauti kwa makosa mbalimbali.
Katika SQL 2000, kuna matukio ambapo XACT_ABORT inashindwa avvecklingen shughuli moja kwa moja.
Kwa mfano:
Kuingiza katika jina batili column.
Kuingiza ndani ya muhimu ya msingi na IDENTITY_INSERT OFF.
Utekelezaji SELECT kwamba anatumia UDF haupo.
Hizi ni aina ya makosa ya kawaida kutokana na amri vibaya mwandishi, hivyo hawana kutokea katika utendaji kazi wa siku hadi siku wa programu yako bila mtu alters schema. Lakini mimi akaunti kwa ajili ya uwezekano wao wakati mwandishi database update scripts wakati kupeleka toleo la mwezi wa mradi, tu katika kesi kupelekwa haina kwenda kama ilivyopangwa.
Kuna njia za kushughulikia makosa haya. Kufanya yako lazima katika kundi kufanya kauli DML. Baada ya kundi (baada ya keyword GO) unaweza kuangalia @ @ TRANCOUNT kuona kama ni mkubwa kuliko sifuri na kutenda ipasavyo. Kawaida avvecklingen shughuli.
Shughuli unaweza span batches, hivyo unaweza nitafanya avvecklingen katika kundi baadae.