SQL Server 2005 : A quoi sert le RESTORE DATABASE STOPAT sur SQL Server 2005 ?
SQL Server est capable de restaurer une base de données à n'importe quel point dans le temps (voir un prochain post) avec l'utilisation du mot clef STOPAT sur le RESTORE LOG (http://blogs.codes-sources.com/christian/archive/2007/10/28/sql-server-restaurer-une-base-de-donn-es-la-milliseconde-pr-s-restore-log-with-stopat.aspx ). SQL Server 2005 a vu apparaître la même syntaxe sur le RESTORE DATABASE (restauration de sauvegarde complète, différentielle, etc.), on pourrait légitimement se dire qu'il est possible de restaurer une base de données entre le début de l'opération de sauvegarde complète et la fin… En fait il n'en est rien. Pour que cela fonctionne il faudrait que le moteur de base de données ait toutes les pages de données de la base de données telles qu'elles étaient au début de l'opération de sauvegarde. Cela n'est pas possible sauf à bloquer les écritures pendant la phase de sauvegarde.
Le RESTORE DATABASE STOPAT vous indiquera juste s'il est possible ou non de restaurer la base de données à la date et l'heure que vous spécifiez.
RESTORE DATABASE AdventureWorks
FROM DISK = 'yyy.bak'
WITH STOPAT = '20070101 12:00:00'
Si la restauration à la date et heure spécifiée n'est pas possible :
Msg 4338, Level 16, State 1, Line 1
The STOPAT clause specifies a point too early to allow this backup set to be restored. Choose a different stop point or use RESTORE DATABASE WITH RECOVERY to recover at the current point.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
J'ai moi même cru le contraire pendant quelques temps, et une question sur les newsgroups privé des MVP à donné lieu à ce post explicatif :
http://blogs.msdn.com/sqlserverstorageengine/archive/2007/10/26/fuzzy-backups-and-restore-database-with-stopat.aspx
Merci à Kevin d'expliquer cette fonctionnalité qui n'est d'ailleurs documentée nulle part.
Bonne restauration…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :