> Tech > Restaurer WITH RECOVERY et WITH NORECOVERY

Restaurer WITH RECOVERY et WITH NORECOVERY

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

La commande RESTORE DATABASE agit doublement : elle copie toutes les données, journaux et pages d'index du média de backup dans les fichiers base de données, et elle applique toutes les transactions qui se trouvent dans la partie sauvegardée du journal. Vous devez déterminer s'il faut ordonner à  SQL Server

d’annuler les transactions
incomplètes. Si vous voulez annuler
(effectuer le rollback), vous pouvez utiliser
l’option WITH RECOVERY de la
commande RESTORE DATABASE pour
récupérer la base de données. L’option
WITH RECOVERY annule les transactions
incomplètes et ouvre la base de
données pour utilisation. Si vous envisagez
de restaurer les sauvegardes du
journal de transactions suivantes et si
vous ne voulez pas récupérer la base
de données et faire effectuer à  SQL
Server les annulations jusqu’à  la restauration
du dernier journal de transactions,
vous n’aurez pas besoin d’utiliser
l’option WITH RECOVERY. La
commande RESTORE LOG vous permet
aussi de spécifier WITH RECOVERY
ou WITH NORECOVERY.

Rappelons que les sauvegardes de
journaux de SQL Server 2000 et 7.0 ne
se chevauchent pas – chaque sauvegarde
du journal commence là  où la
précédente a fini. Prenons comme
exemple une transaction qui effectue
des centaines de mises à  jour sur une
table. Si vous sauvegardez le journal au
milieu de la mise à  niveau et à  nouveau
à  la fin de celle-ci, la première sauvegarde
du journal inclura le début de la
transaction et certaines des mises à 
jour, et la seconde sauvegarde du journal
contiendra le reste des mises à  jour
et le commit. Supposons que vous deviez
ensuite restaurer ces sauvegardes
du journal après avoir restauré toute la base de données. Si vous choisissez de
restaurer la première sauvegarde du
journal WITH RECOVERY, SQL Server
annulera la transaction incomplète
dans la première partie du journal. Si
vous essayez ensuite de restaurer la seconde
sauvegarde du journal, la restauration
démarrera au milieu d’une
transaction et SQL Server ne saura pas
ce que le début de la transaction a fait.
Vous ne pouvez pas récupérer des
transactions survenues après cette
grande mise à  jour parce que leurs
opérations pourraient dépendre d’une
partie de la mise à  jour que vous avez
perdue. Donc, SQL Server ne vous laissera
pas poursuivre la restauration.
L’alternative consiste à  exécuter WITH
NORECOVERY, qui laisse la transaction
incomplète. SQL Server saura que la
base de données est incohérente et ne
laissera entrer aucun utilisateur dans la
base de données tant que vous n’aurez
pas effectué la reprise sur elle.

Alors, faut-il choisir WITH RECOVERY
ou WITH NORECOVERY? Si vous
utilisez la commande RESTORE pour
restaurer une sauvegarde de base de
données ou de journal, l’option de restauration
par défaut est WITH RECOVERY.

Mais, généralement, vous devriez
utiliser l’option WITH NORECOVERY
pour toutes les restaurations de journal,
sauf la dernière. Si vous commettez
une erreur et oubliez de spécifier
WITH NORECOVERY, vous devrez recommencer
l’opération de restauration
parce que la base de données a été
récupérée et que des transactions incomplètes
ont été annulées. Toutefois,
si vous oubliez de spécifier WITH RECOVERY
pour la dernière restauration
du journal, la correction est simple :
utilisez la commande ci-dessous pour
récupérer la base de données sans préciser
aucune unité de sauvegarde
source de la restauration :

RESTORE DATABASE <nom base de données>
WITH RECOVERY

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010