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

C# Discussion :

Sauvegarde mySQL à distance c#


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Sauvegarde mySQL à distance c#
    Bonsoir,

    Je vais essayer d'etre le plus clair possible.
    Je voudrais avoir la posssibilté de faire un backup d'une base de donnée existante sur une machine distante de mon réseau.

    J'ai aucune version de mysql installé sur mon poste local,donc il m'est impossible de me servir de l'instruction mysqldump sur mon PC

    j'ai bien essayé de creer une tache planifiee a distance (WMI) avec comme parametre l'instruction qui va me sauvegarder ma base, la tache s'execute bien sur le poste distant, mais le backup n'est pas créé:

    mysqldump -h host-u root -ppassword db > \\dossier sur le reseau\db.bak

    Connaissez vous une solution possible ?
    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Heu... c'est quoi le rapport avec C# ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Le rapport est que je dois géré cette solution dans une appli dévelopéee en c#.
    Donc voila, si quelqu'un peut me proposer une solution soit a base de code SQL ou alors d'une fonction .
    Merci d'avance

  4. #4
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Donc tu veux creer un backup d'une DB mysql sans l'aide d'un client mysql mais tu veux en ecrire un en C#. (C'est bien ca?);

    1er: est-ce vraiment un backup d'on tu as besoin.
    schema de la db , schema de la db + info ...


    maintenant je me demande si tu peux pas a l'aide du refactoring, obtenir la schema de ta base de donnee, puis ensuite creer de facon dynamique un export de tes donnees.

    Mais cela reste a mon avis un travail fastidieux pour quelquechose qui existe deja et dont l'acces est ouvert a tous.(je parle de l'admin mysql a installe sur ton poste client).

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Et en créant un service Windows ou une application Windows que tu vas déclencher à distance ?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Avec le code ci-joint ,en fait je crée une tache planifiée qui s'execute une minute apres, cette tache planifiee execute la fonction permettant de faire ce backup:

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
     
     public void ScheduleJob()
            {
                try
                {
                    //création de l'obet wmi permettant de demander la création de la tâche planifiée
                    Wmi new_wmi = new Wmi(this.str_workstation, this.str_admin_login, this.str_admin_password);
     
                    string toExecute = "mysqldump" + " -h " + this.str_workstation + " -u " + this.username + " -p" + this.password + " " + this.database + " > " + DestFolder;
     
     
                    //obtient le chemin du process à créer
                    ManagementPath path = new ManagementPath("Win32_ScheduledJob");
                    ManagementClass JobClass = new ManagementClass(new_wmi.MgcCimV2.G_Scope, path, null);
     
                    //définition de la date d'exécution de la tâche planifiée à 1 minute plus tard
                    DateTime dt = DateTime.Now;
                    dt = dt.AddMinutes(1);
                    string LocalDateTime = ToDMTFTime(dt);
     
                    //définition d'un tableau contenant tous les paramètres nécessaire à la méthode
                    string stringCommandLine = toExecute;
                    ManagementBaseObject inputArgs = JobClass.GetMethodParameters("Create");
                    inputArgs["Command"] = stringCommandLine;
                    inputArgs["DaysOfMonth"] = 0;
                    inputArgs["DaysOfWeek"] = 0;
                    inputArgs["InteractWithDesktop"] = true;
                    inputArgs["RunRepeatedly"] = false;
                    inputArgs["StartTime"] = LocalDateTime;
     
                    //création de la tâche planifiée (en passant le tableau d'arguments)
                    ManagementBaseObject outParams = JobClass.InvokeMethod("Create", inputArgs, null);
     
                    //traitement du retour de la demande
                    Object returnValue = outParams["ReturnValue"];
     
                    //gestion des erreurs
                    string str_message;
                    switch (int.Parse(returnValue.ToString()))
                    {
                        case 0:
                            str_message = "La demande a été acceptée";
                            break;
                        case 1:
                            str_message = "La demande a été rejettée";
                            break;
                        case 2:
                            str_message = "L'utilisateur ne dispose pas des droits nécessaires";
                            break;
                        case 8:
                            str_message = "Processus interactif";
                            break;
                        case 9:
                            str_message = "Le chemin d'accès du service est introuvable";
                            break;
                        case 21:
                            str_message = "Paramètres invalides";
                            break;
                        default:
                            str_message = "Le compte sélectionné ne dispose pas des droits nécessaires au lancement du service";
                            break;
                    }
     
                    MessageBox.Show("Backup MySQL", str_message, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageReportError.Show(ex);
                }
            }
    La tache planifiée est bien execute sur le poste distant, une fenetre msdos s'ouvrant tres rapidement sur le poste.
    Mais aucun backup n'est effectué.

    Bizarre non ?
    Brice.

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    A la fin de ton instruction mysqldump, ajoute une instruction 'pause' pour que la fenêtre console ne se ferme pas immédiatement. Comme ça, tu pourras voir le résultat du mysqldump. A mon avis, le dump échoue (problème de syntaxe de la commande peut-être).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    C'est bon j'ai réussi !
    Merci

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

Discussions similaires

  1. exécuter mysql à distance
    Par aliomrani1 dans le forum Installation
    Réponses: 6
    Dernier message: 22/02/2007, 14h11
  2. connexion mysql à distance : ERROR 2003 (HY000)
    Par gregcat dans le forum Installation
    Réponses: 4
    Dernier message: 11/01/2007, 12h21
  3. [MyODBC]import d'une sauvegarde MySQL
    Par hansaplast dans le forum Access
    Réponses: 4
    Dernier message: 13/07/2006, 15h23
  4. connexion à mysql à distance
    Par djins dans le forum Installation
    Réponses: 3
    Dernier message: 10/10/2005, 20h02
  5. Comment sauvegarder MySQL via SSH ?
    Par Blade dans le forum Administration
    Réponses: 7
    Dernier message: 30/09/2004, 14h03

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