DataServer for MS SQL Server supports savepoints for backing out sub-transactions and to maintain sub-transaction boundaries efficiently. From OpenEdge Service Pack Release 11.7.2, ABL sub-transactions are translated to SQL Server savepoints and UNDO of a sub-transaction is handled by SQL Server.

The following sections describe how rollback of sub-transactions is handled:

UNDO of sub-transactions with LOBs

In previous releases of OpenEdge, backing out a sub-transaction with LOBs aborted the entire transaction and resulted in the following error:
“Undo of sub-transaction modifying a large object.  Backing out transaction. (11599)”
Using savepoints, DataServer for MS SQL Server allows you to rollback only that specific sub-transaction with LOBs without backing out the entire transaction.

UNDO of DELETE

In previous releases of OpenEdge, submitting a CREATE after performing an UNDO of a DELETE sub-transaction generated a gap in PROGRESS_RECID value. For example, consider that the PROGRESS_RECID value is 1, and you performed an UNDO of a DELETE sub-transaction. If you create a new record after the UNDO, the PROGRESS_RECID value changes to 3 instead of 2—a gap in the value. This gap in PROGRESS_RECID value is not generated using savepoints.