Problème avec BeginTrans et Commit pour éxécuter plusieurs requètes SQL
Vincent4321
Messages postés2Date d'inscriptionvendredi 5 juin 2009StatutMembreDernière intervention22 juin 2009
-
15 juin 2009 à 14:06
Vincent4321
Messages postés2Date d'inscriptionvendredi 5 juin 2009StatutMembreDernière intervention22 juin 2009
-
22 juin 2009 à 18:16
Salut à tous,
je souhaite modifier ou créer un article dans ma DB (SQL2005) en utilisant begintrans et commit mais je reçois un message d'erreur qui me dit qu'aucune transaction n'est active.
-->
strSql = ""
lngCnt1 = 0
For lngCnt = 0 To lngarrCounter
strSql = strSql & strarrQuery(lngCnt) 'table contenant les instructions SQL
Next lngCnt
mconLocal.BeginTrans()
mconLocal.Execute(strSql)
mconLocal.CommitTrans()
strSql = ""
-->
Après quelques recherches, j'ai remarque que cette erreur ne survient que lorsque j'envoie un gros paquet d'instructions au serveur SQL (plus d'une centaine), mais si j'envoi un paquet d'une vingtaine d'instructions là pas de problèmes.
J'ai donc tenté de découper mon gros paquets d'instructions en mettant en place une boucle FOR (avec dedans BeginTrans, Execute et commit) qui l'envoie par petit paquets au serveur SQL et là tout fonctionne parfaitement.
-->
strSql = ""
lngCnt1 = 0
For lngCnt = 0 To lngarrCounter
strSql = strSql & strarrQuery(lngCnt)
mconLocal.BeginTrans()
mconLocal.Execute(strSql)
mconLocal.CommitTrans()
strSql = ""
Next lngCnt
-->
Seul problème, pour les besoins de l'application il faudrait quand même pouvoir faire passer le gros bloc d'instructions en une fois afin d'être certain que toutes les instructions ont été éxécutées en même temps et non pas une partie.
j'espère avoir été assez claire dans la description de mon problème
Language utilisé : VB.NET (visual studio 2005) et SQL 2005
Merci d'avance pour toute aide dans la résolution de ce problème.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 juin 2009 à 18:08
Salut
Ta première syntaxe devrait fonctionner.
As-tu pensé à mettre un point virgule ; à la fin de chaque instruction ?
Peut-être même, ajouter un "Go;" (je ne sais plus si le SQL server en a besoin)
A quoi ressemble ta strSql avant de la soumettre ?
As-tu vérifier qu'il ne manquait pas des espaces entre les mots ...
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vincent4321
Messages postés2Date d'inscriptionvendredi 5 juin 2009StatutMembreDernière intervention22 juin 2009 22 juin 2009 à 18:16
J'ai essayé t'as méthode Jack et avec le point virgule sa passe , yes.
Parcontre avec GO la rien, il me dit qu'il y a une erreur de syntaxe avant le GO
Pourtant si je copie le contenu de ma variable dans sql manager et je l'execute, il est heureux bizare.
exemple :
insert into blablabla... ;
GO
update into blablabla ... ;
GO
j'ai essayé t'as méthode Casy mais il me retourne
l'erreur suivante quand il passe pour la 2ème fois dans mconlocal.Execute :
'Error in command Aucune transaction n'est active'
et la je pige pas. J'ai l'impression qu'après il a fermé la connexion et que la seul chose que je puisse faire c'est un commit ou un rollback. Pourquoi ? Faut il faire qlqchse de special lors de la connexion ?
exemple de String utilisé pour faire la connexion: