Restauration de fichier .bak ?

Restauration de fichier .bak ? - PHP - Programmation

Marsh Posté le 03-06-2009 à 00:25:57    

Bonsoir,
 
Voilà j'ai un gros soucis.
 
Pour le BTS j'ai cinq projet à présenter et parmis ceux ci un sera choisi le jour de mon épreuvre pratique.
Un de mes projet me pose un gros soucis.
 
En fait je voulais faire de l'archivage en ligne avec une base SQL Server, donc en gros une sauvegarde, une restauration et une suppression de données.
 
La sauvegarde marche nikel par contre la restauration impossible. J'ai testé ma requete direct sous SQL Server elle fonctionne nikel, mais elle ne veut pas s'éxécuter quand je passe par PHP.
 
Voilà tout le code de ma page d'éxécution...
 
    echo 'Debut';
     
    $query = "SELECT valeurConfig FROM configuration";
    $query.= " WHERE libConfig = 'emplacementBackup'";
    $result = mssql_query($query);
    $row = mssql_fetch_array($result);
     
    $nomBackup = $_SESSION['base'].date(Y).date(m).date(d).date(H).date(i).date(s);
     
    $cheminBackup = $row[0].$nomBackup.'.bak';
     
    if($_POST['typeArchivage'] == 'complet')
    {
     echo 'Creation du backup<br>';
     $query = "BACKUP DATABASE ".$_SESSION['base'];
     $query.= " TO DISK = '".$cheminBackup."'";
     $query.= " WITH FORMAT";
     $result = mssql_query($query);
     echo 'Fin de création du backup<br>';
     
     $ligne = 0;
     
     $query = "RESTORE FILELISTONLY";
     $query.= " FROM DISK = '".$cheminBackup."'";
     $result = mssql_query($query);
     while($row = mssql_fetch_array($result))
     {
      if($ligne == 0)
      {
       $nomLogiqueD = $row[0];
       $cheminFichierMDF = dirname($row[1]).'\\'.$nomBackup.'.mdf';
       $ligne = $ligne+1;
      }
      else
      {
       $nomLogiqueL = $row[0];
       $cheminFichierLDF = dirname($row[1]).'\\'.$nomBackup.'.ldf';
      }
     }
     
     echo $nomLogiqueD.'<br>'.$cheminFichierMDF.'<br>'.$nomLogiqueL.'<br>'.$cheminFichierLDF.'<br>';
     
     echo 'Restauration du backup<br>';
     $query = "RESTORE DATABASE ".$nomBackup;
     $query.= " FROM  DISK = '".$cheminBackup."'";
     $query.= " WITH FILE = 1,";
     $query.= " MOVE '".$nomLogiqueD."' TO '".$cheminFichierMDF."',";
     $query.= " MOVE '".$nomLogiqueL."' TO '".$cheminFichierLDF."',";
     $query.= " NOUNLOAD,";
     $query.= " STATS = 10";
     $result = mssql_query($query);

     echo 'Fin de restauration du backup';
    }
 
Voilà, et c'est donc la requete en rouge qui ne veut pas s'éxécuter sauf sous SQL Server.
 
Donc si quelqu'un trouve une solution qu'il me la fasse parvenir car je cherche depuis un moment, mon BTS est lundi ou mardi prochain et je commence déjà à plancher sur un projet qui pourrait remplacer celui la.
 
Merci d'avance.

Reply

Marsh Posté le 03-06-2009 à 00:25:57   

Reply

Marsh Posté le 03-06-2009 à 03:21:06    

Citation :

ne veut pas s'éxécuter


 
Salut, tu peux donner le message d'erreur que tu reçois  ?

Reply

Marsh Posté le 03-06-2009 à 11:57:16    

neo18045 a écrit :

Bonsoir,
 
Voilà j'ai un gros soucis.
 
Pour le BTS j'ai cinq projet à présenter et parmis ceux ci un sera choisi le jour de mon épreuvre pratique.
Un de mes projet me pose un gros soucis.
 
En fait je voulais faire de l'archivage en ligne avec une base SQL Server, donc en gros une sauvegarde, une restauration et une suppression de données.[...]
Voilà, et c'est donc la requete en rouge qui ne veut pas s'éxécuter sauf sous SQL Server.


Il est où, le problème ?

Reply

Marsh Posté le 03-06-2009 à 13:44:34    

ZeBix a écrit :

Citation :

ne veut pas s'éxécuter


 
Salut, tu peux donner le message d'erreur que tu reçois  ?


 
Warning: mssql_query() [function.mssql-query]: Query failed in C:\Program Files\wamp\www\Nouveau dossier\PROJET\archivage\compteRendu.php on line 89
 
La ligne 89 correspond à la dernière ligne en rouge. L'erreur indique un echec d'execution de la requete, or comme j'avais expliquer, j'ai affiché la requete qui était était executer et je l'ai testé directement sous SQL Server et la aucun souci. Mais depuis la page HTML j'ai ce message.
 

macgawel a écrit :


Il est où, le problème ?


 
Le problème est que justement ça ne marche que quand je tape la requete directement sous SQL Server. Or, ca devrait fonctionner depuis la page HTML ce que ça ne fait pas.


Message édité par neo18045 le 03-06-2009 à 13:49:53
Reply

Marsh Posté le 03-06-2009 à 16:54:34    

A vérifier :
1) pb de login/mdp
2) faire un echo de ladite requête pour voir s'il manque pas un truc
3) ça serait pas un pb de timeout ou de fichier trop gros?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-06-2009 à 17:14:05    

rufo a écrit :

A vérifier :
1) pb de login/mdp
2) faire un echo de ladite requête pour voir s'il manque pas un truc
3) ça serait pas un pb de timeout ou de fichier trop gros?


 
1) login et mdp à SQL Server tu veux dire ? Parce que je ne pense pas que ce soit ça étant donné que la requete juste au dessus qui fait la sauvegarde fonctionne très bien.
2) Déjà fait et un copier-coller de cette requete sous SQL Server m'a montré qu'elle fonctionne très bien et qu'il ne manque rien.
3) Fichier trop gros ? Sinon sous SQL Server la requete ne prend même pas 5 seconde à s'executer.

Reply

Marsh Posté le 03-06-2009 à 17:43:24    

oui mais là, t'es en php, ça peut donc être plus long...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-06-2009 à 20:29:18    

rufo a écrit :

oui mais là, t'es en php, ça peut donc être plus long...


 
J'ai fais un test en mettant ce bout de code en haut du script : ini_set ('max_execution_time', 0);
 
Mais toujours la même erreur. Mais d'après ce que tu dis, si c'est dû a un problème de temps d'execution, ca devrait tourné un petit moment avant d'afficher l'erreur. Or là, l'erreur est quasiment immédiate.

Reply

Marsh Posté le 04-06-2009 à 22:28:22    

Ca ne serait pas un problème au niveau du format de la base ? Quelle version de PHP ? De SQL Server ?


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 04-06-2009 à 22:30:59    

Question conne: as-tu vérifié le chemin auquel tu cherches à accéder? Est-ce qu'il existe sur la machine qui héberge SQL Server?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed