Aborts a transaction.
HRESULT Abort(
BOID * pboidReason,
BOOL fRetaining,
BOOL fAsync);
Parameters
pboidReason
[in]
A pointer to a BOID that indicates why the transaction is being aborted. If this is a null pointer, no reason is provided.
fRetaining
[in]
Whether the abort is retaining or nonretaining.
fAsync
[in]
When fAsync is TRUE, an asynchronous abort is performed and the caller must use ITransactionOutcomeEvents to learn the outcome of the transaction.
Return Code
S_OK
The transaction was successfully aborted.
XACT_S_ABORTING
An abort operation was already in progress. This call was ignored.
XACT_S_ASYNC
An asynchronous abort was specified. The abort operation has begun but its outcome is not yet known. When the transaction is complete, notification will be sent by ITransactionOutcomeEvents.
E_FAIL
The transaction failed to abort for an unspecified reason.
E_UNEXPECTED
An unexpected error occurred. The transaction status is unknown.
XACT_E_ALREADYINPROGRESS
A commit operation was already in progress. This call was ignored.
XACT_E_CANTRETAIN
A retaining abort is not supported or a new unit of work could not be created. The abort succeeded and the session is in autocommit mode.
XACT_E_CONNECTION_DOWN
The connection to the transaction manager failed. The transaction state is unknown.
XACT_E_INDOUBT
The transaction status is in doubt. A communication failure occurred or a transaction manager or resource manager has failed.
XACT_E_NOTRANSACTION
The transaction cannot be aborted because it already had been implicitly or explicitly committed or aborted. This call was ignored.
XACT_E_NOTSUPPORTED
fAsync was TRUE on input and asynchronous abort operations are not supported.
Comments
The following table shows how the values of fRetaining and DBPROP_ABORTPRESERVE affect the rowset state and transaction mode.
DBPROP_ ABORT PRESERVE |
fRetaining |
Rowset state after abort |
Resulting transaction mode of session |
FALSE | FALSE | zombie | implicit / autocommit |
FALSE | TRUE | zombie | explicit / manual |
TRUE | FALSE | preserved | implicit / autocommit |
TRUE | TRUE | preserved | explicit / manual |
See Also