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

Bases de données Delphi Discussion :

Base Firebird en "ShutDown"


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 777
    Par défaut Base Firebird en "ShutDown"
    à tous

    Voilà le code, fait dans une petite application de test
    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
    procedure TForm1.FormShow(Sender: TObject);
    var Cmde, params, Chemin1, Chemin2 : string;
    begin
       Chemin1 := 'C:\SAUVEGARDES\ESSAI.fbk';
       Chemin2 := 'C:\BASES\ESSAI.FDB';
       Cmde := 'C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe';
       params:=Format('-rep -l -g -user SYSDBA -password ' +
       ZConnection.Password +' %s %s',[Chemin1, Chemin2]);
     
       ZConnection.Connected := false;
       ZConnection.Database := '';
       ShellExecute(0,'open',Pchar(cmde),Pchar(params),nil,SW_HIDE);
       ZConnection.Database := Chemin2;
       ZConnection.Connected := true;   <=======
       ZReadOnlyQuery1.Active := true;
    end;
    La restauration se fait correctement, mais l'ordre pointé envoie un message disant que la base est "shutdown". Si je sors de l'appli, la base est bien accessible et je vois que la restauration a été faite correctement.
    D'où vient ce problème

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    L'appel de ShellExecute étant asynchrone, la reconnexion à la BDD est demandée alors que le restore est toujours en exécution.
    Ce qui expliquerait peut-être ce statut "shutdown".

    Utilise plutôt CreateProcess et WaitForSingleObject.

    Tiens nous au courant.

    @+ Claudius.

  3. #3
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Un compo service IBX avec firebird 2.1.
    Cela me semble un mauvaise idée.

  5. #5
    Membre éclairé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 777
    Par défaut
    J'ai aussi essayé avec un CreateProcess. Voici le code. Ce sont les mêmes chemins pour gbak, la sauvegarde et la base que dans le ShellExecute.
    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
    {ceci est dans un procédure}
    Prg :=' C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe';
    Params := '-rep -l -g -user SYSDBA -password masterkey C:\SAUVEGARDES\ESSAI.fbk C:\BASES\ESSAI.FDB';
    Restauration (Prg,Params);
     
    end;
     
    procedure TForm1.Restauration(Prg : TFileName; Params : string);
    var
      StartupInfo: TStartupinfo;
      ProcessInfo: TProcessInformation;
      e : integer;
    begin
     
      FillChar(Startupinfo,Sizeof(TStartupinfo),0);
      Startupinfo.cb:=Sizeof(TStartupInfo);
      if CreateProcess(nil,PChar(Prg),nil,nil,false,normal_priority_class,nil,
                       PChar(Params),Startupinfo,ProcessInfo) then
      begin
        WaitforSingleObject(Processinfo.hProcess, infinite);
        CloseHandle(ProcessInfo.hProcess);
      end
      else
         begin
         e:=getlasterror();
         ShowMessage(IntToStr(e));
         end;   
    end;
    je recois 267 par le ShowMessage, et bien sûr pas de restauration. J'ai vérifié les chemins, allant jusqu'à les copier à partir de l'explorateur. Je ne vois pas pourquoi il me dit erreur de directory (267)

  6. #6
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Un compo service IBX avec firebird 2.1.
    Cela me semble un mauvaise idée.
    pas obligatoire, mais sa marche bien, on peu bien sûr passé par les UIB

  7. #7
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Un compo service IBX avec firebird 2.1.
    Cela me semble un mauvaise idée.
    Pourquoi ? Le service n'est pas lié au compo, le composant ne fait que demander l'exécution du service sur le serveur. C'est bien le service de Firebird qui est exécuté (j'en ai eut la preuve hier)
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  8. #8
    Membre éclairé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 83
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 777
    Par défaut
    Cité par edam
    je préfère tibrestoreservice
    Vous allez rire, c'est justement parce que cette solution en fonctionne pas (ni en sauvegarde ni en restauration) que je suis passé par ShellExecute, qui fonctionne parfaitement en sauvegarde. Maintenant, Cl@udius a certainement raison sur l'origine du shutdown, vue que si je quitte l'appli, la base est accessible. Toutefois, ceci n'explique pas le code 267 que je récolte avec le CreateProcess

    Et en effet, je viens de faire l'essai : si je mets un Timer avec une durée assez longue, plus de shutdown, mais avec le ShellExecute

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

Discussions similaires

  1. liste objet d'une base firebird
    Par fbalien dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/11/2004, 22h40
  2. Refus d'accès à une base Firebird
    Par severine dans le forum Installation
    Réponses: 18
    Dernier message: 04/06/2003, 16h03

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