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 :

MySqlDump & VBS


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut MySqlDump & VBS
    Bonjour à tous.
    En ayant soupé des faq et des forums anglais/français, je viens vous exposer mon problème simple d'apparence et qui, avec votre aide j'en suis certain, une fois résolu me fera bien passer pour un beau guignolo.

    Voilà j'essaie d'écrire un petit script en vb que je ferai tourner sur le serveur avec le planificateur de tâche, script qui fera une sauvegarde hebdomadaire dans un dossier bien spécifique, à l'aide de mysqldump.

    Seulement voilà, les lignes de commande et moi ça fait , et je suis sûr que c'est là que ça plante.

    Donc voici mon code:
    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
    Dim d 'date à traiter 
    Dim	nomFichier 'Nom de la sauvegarde
    Dim nResults
    Dim stRep 'Nom du répertoire à parcourir
    Dim oFSO,oFl
    Dim user
    Dim password
    Dim database
    Dim sqldump
    Dim oShell
    Dim arguments
    Dim jour ' chaine jour de la semaine..
    	d = now ' date actuelle
    	jour = UCase(WeekDayName(WeekDay(d)))
    ' suppression de la sauvegarde précédente datant du même jour
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\Users\poste\Desktop\Ancien Partage\backup batch\backup\hebdomadaire"
    If oFSO.FolderExists(stRep) Then
     For each oFl in  oFSO.GetFolder(stRep).Files
       if InStr(1,Ucase(oFl.Name),jour) <> 0 then
    		oFl.Delete True
    	end if
     Next
    End If
     
    nomFichier = "Backup_BDDSMN_HEBDO_"&jour&"_"&Day(Now)& "/"& Month(Now)&"/"& Year(Now)& "_"& Hour(Now)& ":"& Minute(Now)& ":"& Second(Now)
    user = "smn"
    password = "smn"
    database = "smn"
    sqldump = "C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQLDump.exe"
    nomFichier = nomFichier & ".smn"
    backup_file = stRep & "\" & nomFichier
    arguments = "--user=" & user & " --password=" & password & " " & database & " > " & nomFichier
    arguments = sqldump & " " & arguments
     
    Set oShell = CreateObject("WScript.Shell")
    nResults = oShell.Run ("cmd /c " & arguments, 1, TRUE)
    WScript.Echo(nResults)
    oShell = null
    Le truc, c'est que nResults retourne 1, ce qui laisserait penser qu'il m'a bien créé un fichier, mais celui-ci est introuvable. De plus, l'affichage de nResults est instantané, et vu la taille de la base, c'est clair que mysqldump ne fait rien / plante / ne s'ouvre pas / me regarde de haut un sourcil levé (au choix)
    Alors, elle est où ma grosse ignorance ?

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Le code ne semble pas contenir d'erreur, le problème doit plutôt venir du formatage de ta ligne de commande.
    Tu peux réaliser plusieurs tests pour constater le problème et le résoudre.
    - Tout d'abord, affiche la ligne de commande finale lancée pour la tester ensuite dans une fenêtre de commande et vérifier qu'elle est correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    arguments = sqldump & " " & arguments
    WScript.Echo arguments
    - Ensuite, étant donnée qu'il y a des espaces dans ton chemin de l'exécutable de mysqldump, il est peut être nécessaire de mettre des guillemets pour que le cmd comprenne que le chemin complet est à prendre en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqldump = """C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQLDump.exe"""
    Ensuite, si ton problème vient des arguments que tu as renseigné, le mieux à faire serait de regarder de plus près la doc de mysqldump pour les corriger.

    Dernière chose, le code retour 1 indique une erreur (Windows System Error Codes (0-499)), donc c'est normal que tu ne retrouve pas ton fichier en sortie. Le code retour que tu dois attendre est 0.

    Bonne continuation.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut
    Bonjour et merci pour ta réponse.
    Effectivement l'erreur venait des guillemets qui devaient encadrer les chemins des répertoires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    nomFichier = "Backup_BDDSMN_HEBDO_"&jour&"_"&Day(Now)& "_"& Month(Now)&"_"& Year(Now)& "_"& Hour(Now)& " "& Minute(Now)& " "& Second(Now) & ".sql"""
    user = "smn"
    password = "smn"
    database = "smn"
    sqldump = """c:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump"""
    backup_file = stRep & "\" & nomFichier
    arguments = "-u" & user & " -p" & password & " "&database & " > """ & stRep &"\"& nomFichier
    arguments = sqldump & " " & arguments
    msgbox arguments
    set obj = CreateObject("WScript.Shell")
    nResults = obj.Run(arguments)
    WScript.Echo(nResults)
    obj = null
    La bonne nouvelle c'est que la nouvelle commande générée, éxécutée directement depuis la console, marche très bien.
    La mauvaise nouvelle, c'est que lancé depuis mon vbs, le fichier ne se créé pas.
    L'autre bonne nouvelle, c'est que lancé depuis mon vbs, le code retourné est 0, donc pas d'erreur

    J'y perds mon latin.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut
    C'est bon j'ai résolu mon problème, qui était dû cette fois-ci à la syntaxe dans mysqldump.
    D'après ici

    --result-file=file, -r file
    Ecrit directement dans le fichier indiqué. Cette option doit être utilisé sur MSDOS, car cela évite que la nouvelle ligne ‘\n’ soient converties en ‘\n\r’ (nouvelle ligne et retour chariot).


    Donc la bonne syntaxe dans mon cas c'était
    """c:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump""" & " -u" & user & " -p" & password & " --opt -r """cheminverslefichieràcréer""" &nomdelabasededonnées

    Si ça peut en aider d'autres, tant mieux !

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

Discussions similaires

  1. Création d'un vbs qui permettrait d'arreter l'agent sql
    Par cracosore dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 03/02/2004, 10h22
  2. mysqldump local
    Par deer dans le forum Administration
    Réponses: 3
    Dernier message: 30/10/2003, 11h04
  3. mysqldump sur free
    Par bouba64 dans le forum Administration
    Réponses: 4
    Dernier message: 15/07/2003, 17h10
  4. pb avec mysqldump
    Par dody dans le forum Administration
    Réponses: 8
    Dernier message: 21/05/2003, 07h51

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