Rollback Transaction i SQL Server 2005

SQL Server 2005 nylig intoduced veien til rollback transaksjonene i SQL Server 2005

SET XACT_ABORT PÅ

når XACT_ABORT er på. Den T-SQL-setninger vil automatisk rollback transaksjonen når feilen oppstod i uttalelser.

SET XACT_ABORT PÅ

BRUK EMP
Begynn Tran
Sett inn EmpInfo Verdier(1)
Sett inn EmpInfo Verdier(1) — Denne uttalelsen vil øke primærnøkkelen feilen
Sett inn EmpInfo Verdier(2)
Forplikte Tran

Den første linjen i uttalelsen vil utføre uten feil. Primærnøkkelen feil vil øke i andre linje. Men hele blokken transaksjonen ikke vil være forpliktet fordi XACT_ABORT inn på.

1 kommentar til Rollback Transaction i SQL Server 2005

  • noreply@blogger.com (Todd)

    Du bør være oppmerksom på at XACT_ABORT avslutter dagens * batch *, ikke hele kommandoen. Partier er adskilt med GO nøkkelord. Gjennomføring vil fortsette i begynnelsen av neste batch.

    Denne funksjonen er også i SQL Server 2000, selv om den oppfører seg litt forskjellig for ulike feil.

    I SQL 2000, det er tilfeller der XACT_ABORT unnlater å tilbakeføre transaksjonen automatisk.

    For eksempel:

    Sette inn et ugyldig kolonnenavn.

    Sette inn en primærnøkkel med 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.

Legg igjen en kommentar

Du kan bruke disse HTML-kodene

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