如何在SQL Server中进行快速差异备份和还原

时间:2014-03-12 00:59:37

标签: sql sql-server sql-server-2012

我使用SpecFlow和Selenium在我的ASP.NET MVC网站上进行UI测试。我希望能够在完成测试套件后将数据库(SQL Server 2012)恢复到其预测试条件,并且我希望尽快完成。我可以使用replace(或使用STOPAT)进行完整备份和恢复,但这需要一分钟,差异备份本身只需几秒钟。我想基本上设置一个还原点,然后尽快恢复它,删除自备份以来所做的任何更改。在我看来,这应该能够非常快速地完成,而不需要覆盖整个数据库。这是可能的,如果是的话,怎么样?

1 个答案:

答案 0 :(得分:2)

不使用差异备份。差异备份是指自上次完全备份以来已更改的所有数据页的映像。要恢复差异备份,您必须先恢复它的基本(即完整)备份,然后再恢复差异。

您要求的是一些跟踪自备份以来的更改的过程。这就是数据库快照将闪耀的地方。它是一种写入时复制技术,也就是说,当您进行数据修改时,它会在写入更改之前将数据页的更改前状态写入快照文件。因此,恢复很快,因为它只需从快照中撤回那些已更改的页面。查看"创建数据库快照" CREATE DATABASE文档中的示例。

请记住,这并不是一个很好的防范失败(这是备份的原因之一)。但对于您描述的用例,这听起来很合适。