HRESULT ITransactionDispenser::BeginTransaction(IUnknown punkOuter, ISOLEVEL isoLevel, ULONG isoFlags, ITransactionOptions *pOptions, ITransaction **ppTransaction);
Cette Application Program Interface (API) est utilisée par le moniteur transactionnel pour piloter le gestionnaire de ressources.
Le handle de la transaction est rangé dans le paramètre ppTransaction. La transaction est terminée par destruction du handle.
Le niveau d'isolation de la transaction est donné par isoLevel et isoFlags.
Le résultat est S_OK en cas de succès.
#include <transact.h>
#include <txdtc.h>
#include <xolehlp.h>
static ITransactionDispenser *pITransactionDispenser;
static SQLHDBC hConnexion;
static ITransaction *pITransaction;
...
if (pITransactionDispenser->BeginTransaction(NULL, ISOLATIONLEVEL_ISOLATED, ISOFLAG_RETAIN_DONTCARE, NULL, &pITransaction)!=S_OK)
{
...
}
...
pTransaction->AddRef();
...
if (SQLSetConnectAttr(hConnexion, SQL_COPT_SS_ENLIST_IN_DTC, (SQLPOINTER)pITransation, SQL_NTS)!=SQL_SUCCESS)
{
...
}
...
SQLSetConnectAttr(hConnexion, SQL_COPT_SS_ENLIST_IN_DTC, (SQLPOINTER)SQL_DTC_DONE, SQL_NTS);
...
pTransaction->Release();
...