Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2008, 17h04   #1
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Par défaut Erreur de connection à la base de données

Bonjour à tous,

Voilà mon deenier souci.

Lors ce que je lance une page asp en vbscript j'ai au bout d'un certain nombre d'enregistrement de la requete passé cette erreur la qui apparait :
Code :
1
2
3
4
 
Microsoft OLE DB Provider for SQL Server erreur '80004005' 
 
[DBNETLIB][ConnectionOpen (Connect()).]Ce serveur SQL n'existe pas ou son accès est refusé.
La ligne qui est concerné est un ligne qui execute une requete .

Le souci que j'ai et que je n'arrive pas a résoudre vinet du fait que ctte requete est dans une boucle et qu'elle s'est donc déjà exécutée une bonne 50aine de fois.

pour faire un peu plus clair voici un peu ma page :
Code :
1
2
3
4
5
6
7
8
9
 
'1ere requete de selection'
do while not 'la fin de ma requete 1'
   fait plusieurs test et autres requetes
   ...
   monobjet.execute(requete) ' ligne qui plante au bout du Xieme passage.
 
  . movenext
loop
Vous voyez de quoi cela peut venir?
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 19h25   #2
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 862
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 862
Points : 5 982
Points : 5 982
Salut,

Il faudrait plus de code pour etre certain mais:
Code :
1
2
3
4
5
6
7
do while not 'la fin de ma requete 1'
   fait plusieurs test et autres requetes
   ...
   monobjet.execute(requete) ' ligne qui plante au bout du Xieme passage.
 
  .movenext
loop
Normalement il faut utiliser le recordset pour faire le movenext
Code :
1
2
3
 
  recordset.movenext
loop
Mais bon, cela devrait plutôt générer un time out. Peux-tu nous en montrer plus?
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 10h22   #3
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
je peux mais si tu veux j'ai fais cela de tête car je n'avais plus accès au code.

donc en voilà un peu plus.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SQLQuery = "SELECT * FROM Commande WHERE  id_etat = 10 order by id_commande"
Set RScommande = objconnexion.Execute(SQLQuery)
Do While Not RScommande.EOF
   requete = "select * from liste_article where id_commande = "& rscommande("id_commande")
	set rsarticle = objconnexion.execute(requete)
	do while not rsarticle.eof
             ' on  met a jour la liste des articles
	 ' on fait sonc un insert ou un update sur une table
	 rsarticle.movenext
	loop
	rsarticle.close
	set rsarticle = nothing
 
	RScommande.MoveNext
Loop
 
RScommande.Close
Set RScommande = Nothing
 
objconnexion.Close
Set objconnexion = Nothing
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 11h30   #4
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 366
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 366
Points : 1 547
Points : 1 547
Bonjour

Peut-etre un probleme du a un trop grand nombre de requetes simultanées sur ton serveur (encore qu'avec SQL server, je m'avance peut-être un peu )

As-tu essayé d'inclure tout ça dans une transaction ?

Code :
1
2
3
4
5
6
7
8
 
' au début : 
objconnexion.beginTrans()
 
...... (tout ton traitement)......
 
' A la fin : 
objconnexion.commitTrans()
Le serveur de BdD reçoit toutes les requetes sans les interpréter, puis commence à les traiter des qu'il a reçu le commitTrans()
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 13h50   #5
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
J'ai une belle erreur lorsque je fais ça.

Code :
1
2
3
Microsoft OLE DB Provider for SQL Server erreur '80004005' 
 
Impossible de créer une nouvelle connexion en mode de transaction manuelle ou distribuée.
elle intervient lorsque je fais un select dans la boucle.
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 14h07   #6
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 366
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 366
Points : 1 547
Points : 1 547
Après reflexion, ma remarque n'avait pas beaucoup de sens ....

habituellement, dans ces cas là, je traite une seule requete et gère mes ruptures par programmation :
Code :
1
2
 
select * from Commande inner join liste_article on Commande.id_commande=liste_article.id_commande order by Commande.id_commande
Une seule requete, une seule boucle . Juste quelques tests pour gérer les ruptures. Le SGBD y gagne, le programmeur aussi, le patron est content .

Les tests de rupture amènent un peu de programmation en plus, mais ça compense largement les multiples instanciations/deletions que tu fais avec set ...
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 09h26   #7
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Je vais en effet essayer de faire tout ça en une boucle et on verra.
Au pire cela ne fera rien mais cela ne devrait pas empirer...
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h02   #8
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Malheureusement je n'ai pas plus de résultat avec une seule requete de sélection.

Mais bon je persiste.

Edit :

Ce qui me gene déjà c'est que cela ne le fait pas toujours au même enregistrement de la requete.
Du coup je ne sais pas d'ou cela vient.


Edit 2 :

Est ce que cela peut venir d'une surcharge du serveur?
J'y crois pas trop vu la taille du serveur....
Peut être une surcharge niveau file d'attente des requètes?
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 20h58   #9
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 862
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 862
Points : 5 982
Points : 5 982
Salut,

Ouais, sauf que deux boucles imbriquées cela peut faire bcp de tours...
Tu pourrais d'ailleurs essayer de les compter.

Je suis un peu étonné que tu fasses un "SELECT * FROM..." alors qu'un "SELECT id_commande FROM..." devrait alléger le recordeset. Idem pour "select * from liste_article..." j'imagine.

Sinon, tu pourrais essayer d'en faire une procédure stockée. Il ne me semble pas utile de faire intervenir IIS sur ce morceau de code SQL.

Une autre solution est de travailler en mode déconnecté. Tu peux essayer en faisant un "recordset.GetRows()".

Mais je serais curieux de savoir combien d'enregistrements tu retournes au total.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Dim cnt
Set RScommande = objconnexion.Execute("SELECT COUNT(*) FROM Commande WHERE  id_etat = 10 order by id_commande")
cnt = RScommande(0)
Do While Not RScommande.EOF
	Set rsarticle = objconnexion.execute("select COUNT(*) from liste_article where id_commande = " & rscommande"id_commande"))
		cnt = cnt + rsarticle(0)
		rsarticle.close
	Set rsarticle = nothing
	RScommande.MoveNext
Loop
Response.Write cnt
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2008, 09h24   #10
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Pour info on tourne à 1500 enregistrements.

Je ne trouve pas cela énorme.

J'ai modifié aussi pour le "select *".
et du coup je n'ai plus qu'un seul select puisque hier j'ai imbriqué les deux select.
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2008, 21h29   #11
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 862
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 862
Points : 5 982
Points : 5 982
Citation:
Envoyé par Phiss Voir le message
et du coup je n'ai plus qu'un seul select puisque hier j'ai imbriqué les deux select.
C'est-à-dire? Ca marche?

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 09h20   #12
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Depuis deux jours cela a l'air de passer.
Je cloture duc oup et je réouvre si cela plante à nouveau.
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 21h04   #13
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 862
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 862
Points : 5 982
Points : 5 982
Grâce à quels changements?
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 11h15   #14
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Salut,

Je pensais avoir résolu avec le fait d'avoir réduit le nombre de requetes executées sur ma page.

Mais la ce matin je me retrouve avec les mêmes erreurs de scripts alors que je n'ai plus que le minimum dans ma requete.
je ne vais chercher que les champs dont j'ai besoin après, j'ai regroupé mes deux requetes de selection en une seule.

Et pour infos j'ai aujourd'hui 1500 enregistrements.
Un peu comme avant quoi...

donc je reprends:
J'ai une requete de selection qui me retourne 1500 enregitrements.

Avec ces enregistrements, je teste la valeur d'un des champs, si il n'est pas correct, j'execute uen autre reuqte de sleection poura ller chercher un autre renseignement ( je vais essayer de la mettre dans le premire requte)
sinon apres je ne fais que traité les 1500 enregistrements que je stocke dans une autre table.
Le suel truc qui peut me bloquer ensuite c'est que les résultat que j'ai par rapport a un enregistrement je dois regarder si je ne les ai pas traité avant.

Je m'explique.
Pour l'enregistrment X j'ai un article Y. je test si j'ai pas déjà rencontré l'article Y sur mes enregistrment d'avant.
Si j'ai je fais un update de ma table de résultat sinon j'insère.

Vous avez suivit?
Je peux peut être faire plus clair si vous me demandé. ;-)

Merci de votre aide en tout cas.
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 12h27   #15
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 366
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 366
Points : 1 547
Points : 1 547
Bonjour

Citation:
Vous avez suivit?
Je peux peut être faire plus clair si vous me demandé. ;-)
Oui, tu peux poster le code (complet !) de ta page ainsi que le message d'erreur exact. Ca aidera a t'aider
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 12h36   #16
Membre expérimenté
 
Avatar de Phiss
 
Homme
Développeur Web
Inscription : mai 2005
Messages : 660
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2005
Messages : 660
Points : 581
Points : 581
Alors je reviens avec de bon résultats.
J'ai réussi a enlever encore une requete et du coup cela passe.
A suivre mais bon pour le moment cela passe.

Donc plus de message d'erreur Roro désolé. ;-)

Merci quand même.
__________________
" L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
La Rochefoucauld
Phiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h08.


 
 
 
 
Partenaires

Hébergement Web