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 :
2°) set implicit_transaction à ON :
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)
3°) Alloc, prepare and bind pour faire un INSERT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLExecDirect(stmt, "SET IMPLICIT_TRANSACTIONS ON", strlen("SET IMPLICIT_TRANSACTIONS ON"))
4°) Ensuite l'exécution :
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]
Aucun problème, aucune erreur jusque là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SQLExecute(curs->stmt)
5°) Puis je veux commiter
Et je reçois l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLExecDirect(stmt, "COMMIT", strlen("COMMIT"))
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)"The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION."
Quelqu'un a-t-il une idée ?
Merci d'avance,
Yan302
Partager