Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de backup/restore

Aucune réponse
Avatar
Laurent Léturgez
Salut à tous,

Venant du monde Oracle, je suis en train d'étudier le SGBD SQL Server,
et me voilà confronté à un petit soucis en terme de sauvegarde.
Je vous explique le scenario mis en place, le problème ensuite :

à t0 : je créé une table test avec 3 enregistrements
à t1 : je fais un backup de la database et du fichier de transaction
BACKUP DATABASE testLL TO diskDevice
BACKUP LOG testLL TO diskDevice
à t2 : je fais l'insertion de 3 nouveaux enregistrements dans la table test
à t3 : je flingue le MDF de ma base (simulation de perte d'un disque)

mon but étant de retrouver un état avec mes 6 enregistrements !! bien sur :)

Voici donc ce que je réalise :

à t4 : je fais un backup du journal de transactions
BACKUP LOG testLL TO diskDevice
à t5 : je restaure la base en mode NORECOVERY
RESTORE DATABASE testLL FROM diskDevice WITH NORECOVERY
à t6 : je restaure le dernier log sauvé et je fais le RECOVER
RESTORE LOG testLL FROM diskDevice WITH RECOVERY

Et là, ohhh surprise : la table que j'avais créé avant le Backup
n'existe même pas !!!

Alors où est l'erreur ... je ne pige pas ! les ordres RESTORE DATABASE
prennent bien le dernier jeu de sauvegardes ou pas ??

Info qui a également sont importance : les fichiers de log du serveur me
donnent cette info :
Bypassing recovery for database 'testLL' because it is marked IN LOAD.


Voilà, ce n'est certainement pas grand chose, mais je connais plus le
monde Oracle ... dsl !

Merci de votre aide en tout cas !

Laurent

4 réponses

Avatar
Med Bouchenafa
Il faut restorer tous les journaux sauvegardes et dans l'ordre
RESTORE DATABASE MyDB FROM MyDB_Full WITH NORECOVERY
GO
RESTORE LOG MyDB FROM MyDB_log1 WITH NORECOVERY
GO
RESTORE LOG MyDB FROM MyDB_log2 WITH NORECOVERY
GO
RESTORE LOG MyDB FROM MyDB_log3 WITH RECOVERY
GO
-- Bien cordialementMed Bouchenafa
"Laurent Léturgez" wrote in message
news:4334187f$0$1659$
Salut à tous,

Venant du monde Oracle, je suis en train d'étudier le SGBD SQL Server, et
me voilà confronté à un petit soucis en terme de sauvegarde.
Je vous explique le scenario mis en place, le problème ensuite :

à t0 : je créé une table test avec 3 enregistrements
à t1 : je fais un backup de la database et du fichier de transaction
BACKUP DATABASE testLL TO diskDevice
BACKUP LOG testLL TO diskDevice
à t2 : je fais l'insertion de 3 nouveaux enregistrements dans la table
test
à t3 : je flingue le MDF de ma base (simulation de perte d'un disque)

mon but étant de retrouver un état avec mes 6 enregistrements !! bien sur
:)

Voici donc ce que je réalise :

à t4 : je fais un backup du journal de transactions
BACKUP LOG testLL TO diskDevice
à t5 : je restaure la base en mode NORECOVERY
RESTORE DATABASE testLL FROM diskDevice WITH NORECOVERY
à t6 : je restaure le dernier log sauvé et je fais le RECOVER
RESTORE LOG testLL FROM diskDevice WITH RECOVERY

Et là, ohhh surprise : la table que j'avais créé avant le Backup n'existe
même pas !!!

Alors où est l'erreur ... je ne pige pas ! les ordres RESTORE DATABASE
prennent bien le dernier jeu de sauvegardes ou pas ??

Info qui a également sont importance : les fichiers de log du serveur me
donnent cette info :
Bypassing recovery for database 'testLL' because it is marked IN LOAD.


Voilà, ce n'est certainement pas grand chose, mais je connais plus le
monde Oracle ... dsl !

Merci de votre aide en tout cas !

Laurent



Avatar
Fred BROUARD
Bonjour,

Voici ce que vous devrier réaliser :

à t4 : je fais un backup du journal de transactions
BACKUP LOG testLL TO diskDevice WITH NO_TRUNCATE
à t5 : je restaure la base en mode NORECOVERY
RESTORE DATABASE testLL FROM diskDevice WITH NORECOVERY
à t6 : je restaure le dernier log sauvé et je fais le RECOVER
RESTORE LOG testLL FROM diskDevice WITH RECOVERY

faites attention si vous mettez tout dans le même device de bien retrouver les
bon fichiers. pour cela analysez d'abord le device avec :
RESTORE LABLEONLY
... HEADERONLY
... FILELISTONLY

Pour ma part j'évite d'empiler les sauvegardes dans un même device, car c'est
pénible à gérer. Donc je donne un nom composé comme suit :
BKP_DateHeure_nomBase_TypeSave.MSSQL
Exemples :
BKP_20050101220000_DB_PRODUCTION_1Complete.MSSQL
BKP_20050101221000_DB_PRODUCTION_2Differentielle.MSSQL
BKP_20050101222000_DB_PRODUCTION_3Journal.MSSQL
Ainsi même un tri de fichier me les présente dans l'ordre de la restauration !

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************


Laurent Léturgez a écrit:
Salut à tous,

Venant du monde Oracle, je suis en train d'étudier le SGBD SQL Server,
et me voilà confronté à un petit soucis en terme de sauvegarde.
Je vous explique le scenario mis en place, le problème ensuite :

à t0 : je créé une table test avec 3 enregistrements
à t1 : je fais un backup de la database et du fichier de transaction
BACKUP DATABASE testLL TO diskDevice
BACKUP LOG testLL TO diskDevice
à t2 : je fais l'insertion de 3 nouveaux enregistrements dans la
table test
à t3 : je flingue le MDF de ma base (simulation de perte d'un disque)

mon but étant de retrouver un état avec mes 6 enregistrements !! bien
sur :)

Voici donc ce que je réalise :

à t4 : je fais un backup du journal de transactions
BACKUP LOG testLL TO diskDevice
à t5 : je restaure la base en mode NORECOVERY
RESTORE DATABASE testLL FROM diskDevice WITH NORECOVERY
à t6 : je restaure le dernier log sauvé et je fais le RECOVER
RESTORE LOG testLL FROM diskDevice WITH RECOVERY

Et là, ohhh surprise : la table que j'avais créé avant le Backup
n'existe même pas !!!

Alors où est l'erreur ... je ne pige pas ! les ordres RESTORE DATABASE
prennent bien le dernier jeu de sauvegardes ou pas ??

Info qui a également sont importance : les fichiers de log du serveur me
donnent cette info :
Bypassing recovery for database 'testLL' because it is marked IN LOAD.


Voilà, ce n'est certainement pas grand chose, mais je connais plus le
monde Oracle ... dsl !

Merci de votre aide en tout cas !

Laurent



Avatar
Bouarroudj Mohamed
> Pour ma part j'évite d'empiler les sauvegardes dans un même device, car
c'est pénible à gérer. Donc je donne un nom composé comme suit :



Fred comment vous faite pour restorer tous ces logs ?

avec un meme device on est capable au moins de jouer sur le No de File

while (@i < x-1) -- x est le nombre de log dans le device
begin
RESTORE LOG ..
FROM DISK = ...
WITH NORECOVERY...
FILE = @i

SET @i= @i + 1
end

RESTORE LOG ..
FROM DISK = ...
WITH RECOVERY...
FILE = @i
Avatar
Fred BROUARD
Bouarroudj Mohamed a écrit:
Pour ma part j'évite d'empiler les sauvegardes dans un même device, car
c'est pénible à gérer. Donc je donne un nom composé comme suit :




Fred comment vous faite pour restorer tous ces logs ?



Une petite routine sous forme de PS.

A +



avec un meme device on est capable au moins de jouer sur le No de File

while (@i < x-1) -- x est le nombre de log dans le device
begin
RESTORE LOG ..
FROM DISK = ...
WITH NORECOVERY...
FILE = @i

SET @i= @i + 1
end

RESTORE LOG ..
FROM DISK = ...
WITH RECOVERY...
FILE = @i






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************