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

Administration SQL Server Discussion :

SQL-Server 2005 erreurs restore log file


Sujet :

Administration SQL Server

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut SQL-Server 2005 erreurs restore log file
    Bonjour a tous,

    je suis nouveau avec sql server et je souhaite implementer un backup full + differenciels.
    Le full serait une fois par semaine et les differentiels tous les jours.
    Le probleme arrive lorsque j'essaie de restorer le LOG.
    Voici la suite des operations:

    Je positione la base en recov full

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    --USE master;
    --ALTER DATABASE susdb SET RECOVERY FULL;
    --GO
    Je fait le premier backup full

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --BACKUP DATABASE susdb TO DISK = 'Z:\backup\susdb\susdbfull.bak' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10;
    Ensuite je fais un backup du log

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    --BACKUP LOG susdb TO DISK = 'Z:\backup\susdb\susdb_log.bak' WITH NORECOVERY;
    --GO
    Et enfin le premier diff

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --BACKUP DATABASE susdb TO DISK = 'Z:\backup\susdb\susdb_diff.bak' WITH NOINIT , NOUNLOAD ,DIFFERENTIAL, NOSKIP , STATS = 10, NOFORMAT;
    La je detruit ma base pour la restoration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --RESTORE DATABASE susdb FROM DISK = 'Z:\backup\susdb\susdbfull.bak' WITH FILE=1,NORECOVERY;
    Et c'est la que j'ai le doute, le log doit etre restoré juste apres le full? ou doit il etre restoré apres le diff?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --RESTORE DATABASE susdb FROM DISK = 'Z:\backup\susdb\susdb_diff.bak' WITH FILE=1,NORECOVERY;
    --RESTORE LOG susdb FROM DISK = 'Z:\backup\susdb\susdb_log.bak' WITH FILE=2, NORECOVERY;
    Dans tous les cas j'ai cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    No se encuentra el Id. de archivo 2 en el dispositivo 'Z:\backup\susdb\susdb_log.bak'
     
    Traduction, Ne trouve pas l'id du fichier 2 dans le dispositif....
    Si je passe du log et que j'execute ceci, ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    --GO
    --recover the database:
    --RESTORE DATABASE susdb WITH RECOVERY;
    --GO
    J'ai pas compris la logique en fait, dois avoir des log si j'utilise le differentiel?

    D'avance merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Normal, votre plan est stupide ou votre logique de restauration l'est...

    Faire un COmplete + Log + Diff est pas très catholique. C'est l'inverse qu'il faudrait faire :
    1) Full
    2) Diff
    3) Log

    D'ou votre erreur :
    RESTORE FULL ... WITH NORECOVERY => OK
    RESTORE DIFF ... WITH NORECOVERY => stupide car c'est votre dernière sauvegarde...
    Donc vous devez faire un
    RESTORE DIFF ... WITH RECOVERY => OK et base en production
    et c'est tout car les transactions de votre BACKUP LOG sont dans la diff.

    D'ou votre erreur lorsque vous tentez de restaurer le LOG.

    Si votre plan de sauvegarde avait été correct, vous n'auriez pas eu l'erreur.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    ok donc a part le faite que cesoit stupide (ça j'admet) j'ai encore un doute.
    Tu propose de faire le full par exemple un dimanche.
    Ensuite des diff chaque jours de la semaine.
    Et le log... Je dois le faire apres chaque diff n'est ce pas?
    je dois avoir un jeu de log qui correspond au dernier block modifié qui se trouve dans le diff, tu confirme?
    par exemple faire un full par semaine, des diff tous les jours et un log juste avant le prochain full, ça n'a pas de sens non plus?

    Si la base scratch le jeudi...Je fais le restore avec le dernier full, et ensuite la aussi j'ai le doute, je dois d'abord restorer le dernier diff et a la fin le log ?

    D'avance merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    le JT vous pouvez le faire toutes les heures, toutes les 10 minutes... Ce qui importe c'est :
    combien de données puis-je perdre en cas de crash du serveur ?

    Si vous mettez 10 minutes, alors en moyenne la perte de production sera de 5 minutes, au mieux de 0 au pire de 10.

    La durée de la sauvegarde du JT est très rapide.

    Que vous fassiez 200 sauvegardes dans la journée ou une seule en fin, la durée sera sensiblement la même, car l'ensemble des 200 sauvegardes de JT contiendra les mêmes informations que si vous n'en faite qu'une seule.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    ok j'ai compris.
    Je vais mettre en place cette politique pour voir.
    Merci pour tout les bon conseils !!

    Bonnes fêtes !!

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Bonjour

    je reviens sur ce post car j'ai encore un doute.

    Lorsque je fais un backup full de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BACKUP DATABASE MaBase TO DISK = 'G:\mabaseFull.bak';
    et que ensuite je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESTORE FILELISTONLY FROM DISK = 'G:\mabaseFull.bak'
    j'obtient 2 fichiers: le mdf et le ldf
    le ldf c'est le log n'est ce pas?

    Donc si je suit l'ordre que nous avions etabli la derniere fois:
    j'ai 2 log au total...celui qui est inclus dans le full plus le dernier.
    C'est bien ça?

    Pour restaurer je restore tout sans me poser de question?
    Si je fais un autre restore filelistonly du fichier de log, j'obtient aussi le mdf et le ldf..La je comprend plus. Le ldf est inclus dans le full et le ldf est inclus dans lo log?

    D'avance merci

Discussions similaires

  1. [Sql Server 2005]erreur '80004005'
    Par le_ben dans le forum Administration
    Réponses: 2
    Dernier message: 22/09/2009, 10h16
  2. [SQL Server 2005] Erreur lors de l'installation de sql server
    Par cirtadev dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 04/08/2009, 09h29
  3. [SQL Server 2005] Erreur lors du backup de log
    Par nox75 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2009, 14h45
  4. [SQL SERVER 2005] erreur avec sessions
    Par barnet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2007, 18h16
  5. [C# et SQL Server 2005]Erreur mémoire
    Par dtavan dans le forum Accès aux données
    Réponses: 1
    Dernier message: 05/06/2007, 13h01

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