Restauration de fichier .bak ? - PHP - Programmation
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 ?
Marsh Posté le 03-06-2009 à 11:57:16
neo18045 a écrit : Bonsoir, |
Il est où, le problème ?
Marsh Posté le 03-06-2009 à 13:44:34
ZeBix a écrit :
|
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 : |
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.
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?
Marsh Posté le 03-06-2009 à 17:14:05
rufo a écrit : A vérifier : |
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.
Marsh Posté le 03-06-2009 à 17:43:24
oui mais là, t'es en php, ça peut donc être plus long...
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.
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 ?
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?
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.