Atšaukti operaciją SQL Server 2005

"SQL Server 2005 naujai intoduced būdas atmesti "SQL Server sandoriai 2005

SET XACT_ABORT APIE

, kai XACT_ABORT yra. T-SQL bus automatiškai atmesti operaciją, kai įvyko klaida, pareiškimai.

SET XACT_ABORT APIE

NAUDOJIMAS Emp
Pradėti Tran
Įterpti į EmpInfo vertybių(1)
Įterpti į EmpInfo vertybių(1) — Šis pareiškimas bus padidinti pirminio rakto klaidą
Įterpti į EmpInfo vertybių(2)
Įsipareigoti Tran

Pirmoje eilutėje Statment atliks be jokių klaidų. Pirminis raktas klaida bus iškelti antroje eilutėje. Tačiau visas blokas sandoris nebus įsipareigojusi, nes į ant XACT_ABORT.

1 komentaras Atmesti sandoris SQL Server 2005

  • noreply@blogger.com (Todas)

    Turėtumėte atkreipti dėmesį, kad XACT_ABORT nutraukia srovės * partiją *, ne visa komanda. Partijos atskiriami su GO raktažodį. Vykdymo tęsis kito partijos pradžioje.

    Ši funkcija taip pat yra SQL Server 2000, nors jis elgiasi šiek tiek skirtingai įvairiuose klaidas.

    SQL 2000, yra atvejų, kai XACT_ABORT nepavyksta atmesti sandorį automatiškai.

    Pavyzdžiui:

    Įdėjimas į invalido stulpelio pavadinimo.

    Įdėjimas į pirminio rakto su IDENTITY_INSERT OFF.

    Executing a SELECT that uses a non-existent UDF.

    These types of errors are usually due to a poorly authored command, so they don’t occur in the day-to-day operation of your program unless someone alters the schema. But I account for their possibility when authoring database update scripts when deploying a new version of a project, just in case deployment doesn’t go as planned.

    There are ways to handle these errors. Your COMMIT should be in the batch performing the DML statements. After the batch (after the GO keyword) you can check the @@TRANCOUNT to see if it’s greater than zero and act accordingly. Usually ROLLBACK the transaction.

    Transactions can span batches, so you can execute a rollback in a subsequent batch.

Leave a Reply

Galite naudoti šiuos HTML tagai

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