Bonjour à tous,

Je rencontre un problème dans l'utilisation de commit lors que MARS est activé.

Voici les étapes de j'exécute :

1°) Connection :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
connectString = Driver={SQL Native Client};Server=BROL\SQLEXPRESS; Database=test;Trusted_Connection=Yes;MARS_Connection=Yes;"
 
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &ODBCenv)
SQLSetEnvAttr(ODBCenv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER *)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, ODBCenv, &ODBCcon)
SQLDriverConnect(ODBCcon, NULL, connectString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT)
2°) set implicit_transaction à ON :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SQLExecDirect(stmt, "SET IMPLICIT_TRANSACTIONS ON", strlen("SET IMPLICIT_TRANSACTIONS ON"))
3°) Alloc, prepare and bind pour faire un INSERT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SQLAllocHandle(SQL_HANDLE_STMT, ODBCcon,&(curs->stmt)
SQLPrepare(curs->stmt, curs->str, strlen(curs->str)
[some bind]
4°) Ensuite l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SQLExecute(curs->stmt)
Aucun problème, aucune erreur jusque là

5°) Puis je veux commiter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SQLExecDirect(stmt, "COMMIT", strlen("COMMIT"))
Et je reçois l'erreur :
"The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION."
Mais je comprends pas car le bigin transaction devrait être implicite étant donné que IMPLICIT_TRANSACTION a été mis à ON. Si je retire l'option "Mars Connection" de la string de connection, je n'ai plus ce problème avec le commit (mais j'ai besoin que cette option soit activée)

Quelqu'un a-t-il une idée ?

Merci d'avance,

Yan302