Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Begins a new transaction.
Syntax
HRESULT StartTransaction (
ISOLEVEL isoLevel,
ULONG isoFlags,
ITransactionOptions *pOtherOptions,
ULONG *pulTransactionLevel);
Parameters
isoLevel
[in] The isolation level to be used with this transaction. For more information, see Isolation Levels in OLE DB.Value
Description
ISOLATIONLEVEL_UNSPECIFIED
Applicable only to ITransactionJoin::JoinTransaction. Invalid for ITransactionLocal or for setting isolation level while in auto-commit mode.
ISOLATIONLEVEL_CHAOS
Cannot overwrite the dirty data of other transactions at higher isolation levels.
ISOLATIONLEVEL_READUNCOMMITTED
Read Uncommitted.
ISOLATIONLEVEL_BROWSE
Synonym for ISOLATIONLEVEL_READUNCOMMITTED.
ISOLATIONLEVEL_READCOMMITTED
Read Committed.
ISOLATIONLEVEL_CURSORSTABILITY
Synonym for ISOLATIONLEVEL_READCOMMITTED.
ISOLATIONLEVEL_REPEATABLEREAD
Repeatable Read.
ISOLATIONLEVEL_SERIALIZABLE
Serializable.
ISOLATIONLEVEL_ISOLATED
Synonym for ISOLATIONLEVEL_SERIALIZABLE.
isoFlags
[in] Must be zero.pOtherOptions
[in] Optionally a null pointer. If this is not a null pointer, it is a pointer to an object previously returned from ITransactionLocal::GetOptionsObject called on this session instance.pulTransactionLevel
[out] A pointer to memory in which to return the level of the new transaction. The value of the top-level transaction is 1. If pulTransactionLevel is a null pointer, the level is not returned.
Return Code
S_OK
The method succeeded.DB_E_OBJECTOPEN
A rowset object was open, and the provider does not support starting a new transaction with existing open rowset objects.E_FAIL
A provider-specific error occurred.E_UNEXPECTED
An unknown error occurred, and the method failed.XACT_E_CONNECTION_DENIED
This session could not create a new transaction at the present time due to unspecified capacity issues.XACT_E_CONNECTION_DOWN
This session is having communication difficulties with its internal implementation.XACT_E_ISOLATIONLEVEL
Neither the requested isolation level nor a strengthening of it can be supported by this transaction implementation, or isoLevel was not valid.XACT_E_LOGFULL
A transaction could not be created because this session specifies logging to a device that lacks available space.XACT_E_NOISORETAIN
The requested semantics of retention of isolation across retaining commit and abort boundaries cannot be supported by this transaction implementation, or isoFlags was not equal to zero.XACT_E_NOTIMEOUT
A noninfinite time-out value was requested, but time-outs are not supported by this transaction.XACT_E_XTIONEXISTS
This session can handle only one extant transaction at a time, and there is presently such a transaction.The session supports a limited number of nested transactions, and that limit has been reached.
Comments
ITransactionLocal::StartTransaction starts a new local transaction. If there is already an active transaction on the session (that is, StartTransaction has been called with no matching ITransaction::Commit or ITransaction::Abort), the new transaction is started as a nested transaction below the current transaction. Calling ITransaction::Commit or ITransaction::Abort always commits or aborts the transaction at the lowest level, respectively. If the provider does not support nested transactions, calling ITransactionLocal::StartTransaction when there is already an active transaction on the session returns XACT_E_XTIONEXISTS.