恢复到某个时间点

时间:2009-07-22 02:57:45

标签: sql-server

我将数据库(Sql 2005 Express)的mdf和ldf复制到我的机器上,并在我的Sql 2005(Developer Edition)中附加了它们。我已经将源计算机中的日志记录设置为完整,因为我需要研究一个问题。

现在,在我的SQL Server中,我有2个数据库,我刚刚附加的DAProd和刚刚创建的DARestore。我想用DAProd的时间点版本恢复DARestore。当我调出Restore对话框时,它不会在源下拉列表中显示DAProd。任何指针都将受到赞赏。

感谢。

2 个答案:

答案 0 :(得分:4)

我假设你有DAProd的备份(包括完整和日志)。您无需附加DAProd副本,备份过程可以为您创建“复制”数据库。但是如果你确实附上了它就没关系,无所谓。

首先,您运行DAProd的最新完整备份的还原,该备份早于您想要停止恢复的时刻:

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

接下来,您将开始恢复完整备份后发生的LOG备份,但仍然在时间之前,逐个:

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

现在,您将恢复包含您想要停止的时刻的日志:

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

最后一步是将DAProd数据库联机。顺便说一句,这将在您的时刻回滚任何未提交的“飞行中”交易:

ALTER DATABASE [DAProd] SET ONLINE;

您现在可以按照您希望的时间查看数据库,因为如果它将在那时回滚任何待处理的事务

答案 1 :(得分:2)

为了执行时间点恢复,您需要DAProd的各种时间点备份,而不是重新附加数据库的当前副本。

请参阅How to: Restore to a Point in Time (SQL Server Management Studio)

另外:Point in Time Recovery

How to: Restore a Database Backup (SQL Server Management Studio)