IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

VbScript / ADODB perte de connexion, reconnexion impossible


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut VbScript / ADODB perte de connexion, reconnexion impossible
    Bonjour,

    J'ai un script vbs qui boucle à toutes les 5 minutes et qui requête en base de donnée. Tout ce passe bien jusqu'à ce qu'il y ait un problème de connexion à la base de donnée.

    Une fois que le script perd la connexion à la base de données, il est impossible qu'il se reconnecte par la suite même si la base revient en ligne. Le seul moyen de rétablir le tout, est d'arrêter et relancer le script.

    Quand la base de donnée est injoignable, j'ai le message d'erreur suivant : -2147467259:[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SQL Server does not exist or access denied.

    Et Quand la base revient en ligne, j'ai le message suivant : 424:Objet requis

    Auriez-vous des idées à me donner afin de pouvoir gérer ce problème sans avoir à relancer le script ?

    Voici le bout de code qui effectue la connexion, toute remarque constructive sur ce dernier sera considérée et appréciée.


    Code VBScript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    ...
    Do While MyExit=0
    	Print_Log Log_File, "Launching VBS in 5 minutes !"	
    	WScript.Sleep(300000)
     
    	'Vérification de la version du vbs local
    	LocalVbsFileVer=CheckLocalVer(LocalVbsFileName)
    	Print_Log Log_File, "Local HeartBeat File Version : " & LocalVbsFileVer
    	LocalVbsLibVer=CheckLocalVer(LocalVbsLibName)
    	Print_Log Log_File, "Local Library File Version : " & LocalVbsLibVer
    	LocalVbsMainVer=CheckLocalVer(LocalVbsMainName)
    	Print_Log Log_File, "Local Main File Version : " & LocalVbsMainVer
     
    	' Connexion à SQL Server.
    	Print_Log Log_File, "Connectiong to SQL ..."
    	Set oCn = WScript.CreateObject("ADODB.Connection")
    	oCn.ConnectionString = "Driver={SQL Server};" & _
    	                 "Server=monserver;" & _
    	                 "Address=monserver,1433;" & _
    	                 "Network=DBMSSOCN;" & _
    	                 "Database=mabase;" & _
    	                 "user id=monuser;" & _
    	                 "password=monpass;"
    	oCn.Open
    	If Err.number <> 0 Then
    		Print_Log Log_File, "Not Able To Connect to SQL Server !"
    		Print_Log Log_File, Err.Number & ":" & Err.Description
    		Set Err.number = 0
    		oCn.ConnectionString
    		Set oCn = Nothing
    	Else
    		Print_Log Log_File, "Connected to SQL Server !"
    		Print_Log Log_File, "Controlling files version ..."
    		ControlFileVer LocalVbsFileName,LocalVbsFileVer
    		ControlFileVer LocalVbsLibName,LocalVbsLibVer
    		ControlFileVer LocalVbsMainName,LocalVbsMainVer
    		Print_Log Log_File, vbtab & "Getting System Info..."
    		MyResult = split(ExecCommand("cscript.exe //H:CScript //nologo //T:60 " & LocalVbsFileName),vbcrlf)
    		Print_Log Log_File, vbtab & "Command Output :"
    		For each StrLine in MyResult
    			Print_Log Log_File, vbtab & vbtab & StrLine
    		Next
    		oCn.Close
    		Set oCn = Nothing
    	End If
     
    Loop
    ...
    Je suis a peu près certain que le problème est dans cette partie de code mais je n'ai pas le solution nécessaire. Vous l'auriez ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	oCn.Open
    	If Err.number <> 0 Then
    		Print_Log Log_File, "Not Able To Connect to SQL Server !"
    		Print_Log Log_File, Err.Number & ":" & Err.Description
    		Set Err.number = 0
    		oCn.ConnectionString
    		Set oCn = Nothing
    	Else
    ...

    Merci d'avance

    Christian

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 131
    Par défaut
    Bonjour, bienvenue sur DVP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	oCn.Open
    	If Err.number <> 0 Then
    		Print_Log Log_File, "Not Able To Connect to SQL Server !"
    		Print_Log Log_File, Err.Number & ":" & Err.Description
    		Set Err.number = 0
    		oCn.ConnectionString ' <========= ????
    		oCn.Close ' <============ A tenter
    		Set oCn = Nothing
    	Else
    Pourquoi passes tu un oCn.ConnectionString ?
    Un .Close, bien que le Open ait échoué, devrait renseigner le serveur de BD, évitant peut être lors de la connexion qui suivra quelle ne ce face sur la même signature procès, Set oCn = Nothing ne vidant que l'espace mémoire coté client mais ne renseigne pas le serveur de BD.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut
    Bonjour et Merci pour la réponse.

    Le oCn.ConnectionString est un petit erreur, il manque le = "" derriere, je tentais de vider la valeur de connection string.


    J'ai modifié le code et tenté le .Close et j'ai une petite différence.
    La premiere fois que la base revien, j'ai l'erreur suivante :3704:Operation is not allowed when the object is closed.

    Ensuite, je reviens à l'erreur : 424:Objet requis

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut
    Whouhou !

    J'ai réussi à régler mon problème.

    En fait ce qui causait problème était la méthode utilisée pour réinitialisé le Err.number
    Il fallait utilisée Err.Clear au lieu de Err.number=0

    Maintenant, tout passe nickel !

    Merci pour votre aide.

    La boucle ressemble finallement a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Do While MyExit=0
    	Print_Log Log_File, "Launching VBS in 5 minutes !"	
    	WScript.Sleep(300000)
     
    	'Vérification de la version du vbs local
    	LocalVbsFileVer=CheckLocalVer(LocalVbsFileName)
    	Print_Log Log_File, "Local HeartBeat File Version : " & LocalVbsFileVer
    	LocalVbsLibVer=CheckLocalVer(LocalVbsLibName)
    	Print_Log Log_File, "Local Library File Version : " & LocalVbsLibVer
    	LocalVbsMainVer=CheckLocalVer(LocalVbsMainName)
    	Print_Log Log_File, "Local Main File Version : " & LocalVbsMainVer
     
    	' Connexion à SQL Server.
    	Print_Log Log_File, "Connectiong to SQL ..."
    	Set oCn = WScript.CreateObject("ADODB.Connection")
    	oCn.ConnectionString = "Driver={SQL Server};" & _
    	                 "Server=monserver;" & _
    	                 "Address=monserver,1433;" & _
    	                 "Network=DBMSSOCN;" & _
    	                 "Database=mabase;" & _
    	                 "user id=monuser;" & _
    	                 "password=monpass;"
    	oCn.Open
    	If Err.number <> 0 Then
    		Print_Log Log_File, "Not Able To Connect to SQL Server !"
    		Print_Log Log_File, Err.Number & ":" & Err.Description
    		Err.Clear
    	Else
    		Print_Log Log_File, "Controlling files version ..."
    		ControlFileVer LocalVbsFileName,LocalVbsFileVer
    		ControlFileVer LocalVbsLibName,LocalVbsLibVer
    		ControlFileVer LocalVbsMainName,LocalVbsMainVer
    		Print_Log Log_File, vbtab & "Getting System Info..."
    		MyResult = split(ExecCommand("cscript.exe //H:CScript //nologo //T:60 " & LocalVbsFileName),vbcrlf)
    		Print_Log Log_File, vbtab & "Command Output :"
    		For each StrLine in MyResult
    			Print_Log Log_File, vbtab & vbtab & StrLine
    		Next
    		oCn.Close
    	End If
    	Set oCn = Nothing
     
    Loop

    Merci encore.

    Christian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Data] Perte de connexion à la base sans auto-reconnexion
    Par Yoann.chambonnet dans le forum Spring
    Réponses: 0
    Dernier message: 02/10/2009, 15h04
  2. [IB6.0]-Perte de connexion Client
    Par GroupeEL dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 21/03/2005, 15h43
  3. [JNDI] Problème en cas de perte de connexion
    Par Marc_P dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/10/2004, 14h45
  4. Perte de connexion BD
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 30/10/2003, 10h23
  5. Perte de connexion (bis)
    Par rgarnier dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/05/2003, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo