Vb dot net perd la connexion vers sql server [Résolu]

Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
- - Dernière réponse : cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
- 17 nov. 2009 à 10:00
j'ai un lot de requête (300 requête) qui s'exécutent successivement sur Sql server 2005 en utilisant le SqlClient de vb dot net. mais quand il s'agit d'un grand lot de données (1 200 000 lignes) le vb dot net bugue et il m'affiche le message "Erreur SQL ExecuteNonQuery nécessite une connexion ouverte et disponible" sachant que le service sql server est toujours lancé!
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
3
Merci
Salut,

J4ai eu ce problème, il va falloir que tu gère les requettes en y mettant une deconnection et reconnection toutes les n lignes

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cboulas
Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
3
Merci
dsl mais ta réponse n'est pas précise.
j'ai fait un Timeout=0 mais toujours je perd la connexion

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de hajerOnward
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
3
Merci
En fait je te proposait d'éclater ta requette en Vues, et function.

Les vues te feront gagner du temps car la requette n'est pas à analyser vu qu'elle est déjà validée.

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
3
Merci
Juste pour être d'accord, quand tu dis :

je lance toujours mes requêtes dans un thread à part


Tu utilise le mode asynchrone de ton SqlCommand ou tu créer toi même un nouveau Thread via la class System ?

Car l'un gère ce genre de pb 'normalement' mais pas l'autre

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
3
Merci
Sinon il faudrat éxécuter ta requette dans SQL Server directement


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 141 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cboulas
Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
0
Merci
je peux pas! j'ai une requête (avec des tables temp,....) très compliquée qui dépend de toutes les lignes!!
Commenter la réponse de hajerOnward
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
tout dépend de ce que fait ta requette...

Il faut peut-être fragmenté des requettes afin qu'elle libère la RAM utiliser dès qu'elles ont finies, exemple en faisant des requettes pour créer des vues, puis des fonctions qui vont chercher ci et ça et qui une fois utiliser videront la RAM.

oups je me suis égarer.
Si j'ai bien piger tu a 1 requette qui mouline des heures puis te donne : connectio perdue en gros.

et si tu augmente le delais d'attente ?
je sais aussi qu'il existe une commande qui permet de retourner des résultats dès qu'il y en a plutôt que d'attendre que la requette soit finie ou que les tampons soit pleins

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
0
Merci
Merci Chris,
je vois que c'est une solution! mais elle reste théorique parce que c'est très difficile de mettre à jour 300 requête avec des procédures, des fonctions, des temp,....
mais à voir! je vais essayer
Commenter la réponse de hajerOnward
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
Si tu as 300 requettes, rien ne t'empêche de faire un Connection.Close() puis un Connection.Open() entre 2

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
Ou alors d'utiliser le mode asynchrone afin de le laisser travailler et quand y'a un retour de ta requette tu passe à la suivante, etc... ce qui devrait t'éviter la gestion de timeout


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
0
Merci
biensur que je fais un conection.close et connection.open entre les 2! et je lance toujours mes requêtes dans un thread à part! mais toujours je perd la connexion!


Hajjoura
Commenter la réponse de hajerOnward
Messages postés
22
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
17 novembre 2009
0
Merci
je crée moi moi même un thread via la class system, il y a une différence? sinon, comment je peux utiliser le mode asynchrone de SqlCommand ?
merci!
Hajjoura
Commenter la réponse de hajerOnward
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
Regarde par exemple pour le BeginExecuteNonQuery()

il existe aussi la même chose pour tout les autres : BeginExecuteReader(), BeginExecuteXMLReader()

Il faudrat lui spécifier une procedure de retour.
Genre Begin...(Retour) ou Retour est une IASync qui sera appeler quand la requette aura terminée, du coup cela te fait un foul-disconnected.

Si tu créer un Thread, il va gérer ta requette comme si tu l'éxécutait directement à la différence qu'il te rend la main, alors que l'Asynchrone va complètement se libérer du serveur et l'appli attendra le temps qu'il faut (tu peux gérer le timeout de retour)

Pour imaginer la chose, c'est pile poil comme les sites de vente de billets d'avion, il y a des recherches sur différents fournisseur AF, RAM, etc... et pour chaque site l'on appel un Async qui une fois terminé appelera la fameuse Retour : D'où jamais de TimeOut même si la recherche de billet dure 5 min ou plus. et s'il n'y a pas de retour, cela ne gène pas le site car il continu de fonctionner

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
j'ai oublier l'URL


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
En plus je bois (et dès le matin moi), je me suis tromper d'URL, c'est celle-ci ici

L'autre concerne le Begin mais sans retour de données

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
10
0
Merci
ou pour simplifier la doc :

public Sub MySub(...)
Dim callback As New AsyncCallback(AddressOf HandleCallback)
command.BeginExecuteNonQuery(callback, command)
End Sub

Private Sub HandleCallback(ByVal result As IAsyncResult)
Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
Dim rowCount As Integer = command.EndExecuteNonQuery(result)
Dim rowText As String = " rows affected."
End Sub


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas