SQL Server数据库还原以进行快速测试

问题描述 投票:0回答:1

我有一个很大的数据库,需要几分钟才能从bak文件中恢复。我必须使用Web应用程序运行一些测试,然后放弃所有这些更改以重复测试。这是我当前正在执行的工作流程,我的问题是是否有更好/更少的耗时方法。

  1. 从bak文件还原数据库(bak文件为〜5gb,大约需要1分钟)
  2. 使用Web应用程序执行测试。
  3. 删除数据库,然后从bak文件重新恢复它(步骤1)

db restore选项需要很多时间,我在考虑是否可以使用类似CHECKPOINTS的功能或其他无需再次恢复完整备份的功能。

Edit:我想知道是否存在解决方案,我们可以使用内置的sql-server功能来减少还原时间。想象一下,还原是否需要5分钟,-5分钟是相对于每个用户和每个用例而言的long time还是short time

sql-server database-restore
1个回答
1
投票

首先,“从长远来看,“我拥有一个庞大的数据库,其中包含我要对其进行几次测试并在每次测试后还原的所有数据”,从我的经验来看,这并不是一个很好的模式-仍然存在以下问题:首先在某个地方获得巨大的数据库(您不想使用production,对吗?),可能导致人们无法查看数据的问题,如果实例共享则存在并发问题,而且最令人讨厌的是,依赖于存在的特定数据的脆性测试。将视线移开两周,您发现测试不再有效,人们无法说出原因。

最佳的长期解决方案是使用SSDT创建一个最小的数据库项目,您可以将其检入源代码管理以进行引导。部署为LocalDB,仅插入测试所需的数据,然后进行测试,然后将其丢弃。没有依赖性,没有隐藏的假设。

已经说过,SQL Server确实提供了database snapshots,它是用CREATE DATABASE ... AS SNAPSHOT OF创建并用CREATE DATABASE ... AS SNAPSHOT OF恢复到的。由于这仅涉及丢弃已修改的数据,因此它比完全还原要快得多。如果多个人要运行测试,它仍然不可避免地会遇到并发问题。

© www.soinside.com 2019 - 2024. All rights reserved.