Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 10h27   #1
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 436
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 436
Points : 119
Points : 119
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 :
1
2
3
--USE master;
--ALTER DATABASE susdb SET RECOVERY FULL;
--GO
Je fait le premier backup full

Code :
--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 :
1
2
--BACKUP LOG susdb TO DISK = 'Z:\backup\susdb\susdb_log.bak' WITH NORECOVERY;
--GO
Et enfin le premier diff

Code :
--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 :
--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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Code :
--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 :
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 :
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
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h36   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h51   #3
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 436
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 436
Points : 119
Points : 119
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
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h42   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 09h19   #5
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 436
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 436
Points : 119
Points : 119
ok j'ai compris.
Je vais mettre en place cette politique pour voir.
Merci pour tout les bon conseils !!

Bonnes fêtes !!
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2012, 09h54   #6
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 436
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 436
Points : 119
Points : 119
Bonjour

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

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

Code :
BACKUP DATABASE MaBase TO DISK = 'G:\mabaseFull.bak';
et que ensuite je fais:

Code :
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
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h27.


 
 
 
 
Partenaires

Hébergement Web