我有一个很大的数据库,需要几分钟才能从bak文件中恢复。我必须使用Web应用程序运行一些测试,然后放弃所有这些更改以重复测试。这是我当前正在执行的工作流程,我的问题是是否有更好/更少的耗时方法。
db restore选项需要很多时间,我在考虑是否可以使用类似CHECKPOINTS
的功能或其他无需再次恢复完整备份的功能。
Edit:我想知道是否存在解决方案,我们可以使用内置的sql-server功能来减少还原时间。想象一下,还原是否需要5分钟,-5分钟是相对于每个用户和每个用例而言的long time还是short time。
首先,“从长远来看,“我拥有一个庞大的数据库,其中包含我要对其进行几次测试并在每次测试后还原的所有数据”,从我的经验来看,这并不是一个很好的模式-仍然存在以下问题:首先在某个地方获得巨大的数据库(您不想使用production,对吗?),可能导致人们无法查看数据的问题,如果实例共享则存在并发问题,而且最令人讨厌的是,依赖于存在的特定数据的脆性测试。将视线移开两周,您发现测试不再有效,人们无法说出原因。
最佳的长期解决方案是使用SSDT创建一个最小的数据库项目,您可以将其检入源代码管理以进行引导。部署为LocalDB,仅插入测试所需的数据,然后进行测试,然后将其丢弃。没有依赖性,没有隐藏的假设。
已经说过,SQL Server确实提供了database snapshots,它是用CREATE DATABASE ... AS SNAPSHOT OF
创建并用CREATE DATABASE ... AS SNAPSHOT OF
恢复到的。由于这仅涉及丢弃已修改的数据,因此它比完全还原要快得多。如果多个人要运行测试,它仍然不可避免地会遇到并发问题。