Problème d'accès avec 2 thread à une base de donnée SQL
themaste
Messages postés130Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention 8 juillet 2008
-
6 sept. 2005 à 17:35
cs_dofdof
Messages postés15Date d'inscriptionvendredi 26 novembre 2004StatutMembreDernière intervention19 septembre 2005
-
7 sept. 2005 à 13:18
Salut a tous!
Mon problème est le suivant:
J'ai une application c++ .Net qui fait appelle a une DLL de la solution afin de se connecter a une base de donnée SQL Server 2000.
J'ai ensuite un premier thread qui créé un objet, qui va donc utiliser cette DLL pour se connecter à la base. Puis, un 2e thread créé un autre objet (de mme classe), qui donc va egalement se connecter a la base, avec un login different.
Le pbl, c'est que lorsque le deuxieme essaie de se connecter, j'ai un "Bug assertion Failed", et j'obtiens le message SQL suivant:
"SQL: Une opÚration OLE-DB en plusieurs Útapes a gÚnÚrÚ des erreurs. VÚrifiez chaque valeur d'Útat OLE-DB disponible. Aucun travail n'a ÚtÚ effectuÚ. - Une opÚration OLE-DB en plusieurs Útapes a gÚnÚrÚ des erreurs. VÚrifiez chaque valeur d'Útat OLE-DB disponible. Aucun travail n'a ÚtÚ effectuÚ. - Provider=SQLOLEDB.1;SERVER=INSTANCE\BASE;OLE DB Services=-2;User ID='Login';Password='Pass';Data Source=INSTANCE\BASE;Initial catalog=MABASE;Persist Security Info=True;Time Out=600."
L'erreur arrive sur l'utilisation de la fonction: "OpenFromInitializationString"
Qqu'un a-t-il une idée SVP?
A voir également:
Problème d'accès avec 2 thread à une base de donnée SQL
cs_dofdof
Messages postés15Date d'inscriptionvendredi 26 novembre 2004StatutMembreDernière intervention19 septembre 2005 7 sept. 2005 à 13:18
Salut,
Le probléme vient du fait que les deux threads essai d'acceder aux memes données en meme temps.
Soit tu crée une file d'attente qui te permet de lancer le deuxieme thread quand le premier est finit, soit il faut creer une zone critique mais la je suis pas sur cherche la methode "Critical section"
ou tu utilise des mutex mais je sais pas comment les implementer en C++
(les mutex permettent de proteger les données afin d'eviter que deux threads modifie la meme donnée en meme temps.