Αρχεία

Συναλλαγή επαναφοράς στον SQL Server 2005

SQL Server 2005 intoduced πρόσφατα το δρόμο για κατάργηση των συναλλαγών σε SQL Server 2005

ΣΕΤ ΓΙΑ XACT_ABORT

XACT_ABORT όταν είναι. Τα Τ-SQL αυτόματα θα επαναφοράς της συναλλαγής, όταν σφάλμα στις δηλώσεις.

ΣΕΤ ΓΙΑ XACT_ABORT

USE Emp
Begin Tran
Τοποθετήστε σε EmpInfo Αξίες(1)
Τοποθετήστε σε EmpInfo Αξίες(1) — This statement will raise the primary key error
Τοποθετήστε σε EmpInfo Αξίες(2)
Commit Tran

The first line of statment will execute without any errors. The primary key error will raise in second line. But the entire block transaction will not be commited because the XACT_ABORT in on.

1 comment to RollBack Transaction in SQL Server 2005

  • noreply@blogger.com (Τοντ)

    You should note that XACT_ABORT terminates the current *batch*, not the entire command. Batches are separated with the GO keyword. Execution will continue at the beginning of the next batch.

    This feature is also in SQL Server 2000, though it behaves slightly differently for various errors.

    In SQL 2000, there are cases where XACT_ABORT fails to rollback the transaction automatically.

    For instance:

    Inserting into an invalid column name.

    Inserting into a primary key with 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.

Αφήστε μια απάντηση

Μπορείτε να χρησιμοποιήσετε αυτές τις ετικέτες HTML

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