2009-07-22 7 views
0

J'ai copié sur le mdf et le ldf pour une base de données (Sql 2005 Express) sur ma machine et dans mon Sql 2005 (Developer Edition). J'avais mis la journalisation dans la machine source à plein car j'ai besoin de rechercher un problème.Restaurer à un point dans le temps

Maintenant, dans mon SQL Server j'ai 2 bases de données, DAProd que je viens de joindre et DARestore que je viens de créer. Je veux restaurer DARestore avec une version ponctuelle de DAProd. Lorsque j'appelle la boîte de dialogue Restaurer, DAProd n'apparaît pas dans la liste déroulante source. Tout pointeur sera apprécié.

Merci.

+0

Votre question n'a pas beaucoup de sens. Vous avez besoin des différentes sauvegardes ponctuelles de DAProd, et non d'une copie courante de DB recollée. –

+0

Je suis un débutant à cela. Donc, sur la machine qui exécute DA Prod, lorsque je l'ai configuré, j'ai mis la récupération à pleine capacité. Un mois plus tard, j'ai créé une sauvegarde complète et l'ai déplacée vers ma machine de développement. Je suppose que cela aura la sauvegarde db et log nécessaire pour moi de récupérer à un moment donné? Dans la console de gestion de SQL Server, lorsque j'ouvre une nouvelle requête, quel DB dois-je choisir pour exécuter vos instructions? – Maky29

Répondre

4

Je suppose que vous avez la sauvegarde de DAProd (à la fois complète et log). Vous n'avez pas besoin de joindre une copie de DAProd, le processus de sauvegarde peut créer la base de données 'copie' pour vous. Mais c'est OK si vous l'avez attaché, ne sera pas important.

Tout d'abord vous exécutez une restauration de votre dernière sauvegarde complète de DAProd qui est plus ancien que le moment dans le temps que vous voulez arrêter la récupération:

RESTORE DATABASE [DAProd] FROM DISK = '<yourfullbackup>' WITH NORECOVERY; 

Ensuite, vous commencez à récupérer la sauvegarde du journal qui a eu lieu après la sauvegarde complète, mais encore avant le moment dans le temps, un par un:

RESTORE LOG [DAprod] FROM DISK = 'yournextlog' WITH NORECOVERY; 

maintenant, vous restaurer le journal qui contient le moment dans le temps que vous voulez arrêter:

RESTORE LOG [DAProd] FROM DISK = 'yournextlog' WITH STOPAT = '<timetostop'; 

La dernière étape consiste à utiliser la base de données DAProd en ligne. BTW cela annulera toute transaction non validée 'en cours' à votre moment:

ALTER DATABASE [DAProd] RÉGLER EN LIGNE;

Vous pouvez maintenant regarder la base de données telle qu'elle était au moment où vous le souhaitez, comme si elle annulait toute transaction en attente à ce moment.

+0

+1 Nice, explication de succint –

Questions connexes