用于快速测试的 SQL Server 数据库还原



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

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

db 还原选项需要很多时间,我在想我是否可以使用类似的东西CHECKPOINTS,或者其他一些我不必再次恢复完整备份的功能。

编辑:我想知道是否存在可以使用内置SQL服务器功能减少还原时间的解决方案。想象一下,如果恢复需要 5 分钟,那么 5 分钟是时间还是短时间是相对于每个用户和每个用例而言的。

首先,"我有一个庞大的数据库,其中包含我运行一些测试并在每次测试后恢复的所有数据"从长远来看,根据我的经验,这不是一个非常好的模式 - 仍然需要首先在某个地方获取庞大的数据库(您不想使用生产,是吗?(,可能出现不允许人们查看数据的问题, 如果实例是共享的,则存在并发问题,以及依赖于存在特定数据的最糟糕、最脆弱的测试。移开视线两周,你会发现你的测试不再有效,人们无法说出原因。

最好的长期解决方案是使用 SSDT 创建一个最小的数据库项目,它可以作为可以签入源代码管理以启动的内容。部署为 LocalDB,仅插入测试所需的数据,测试,然后丢弃它。没有依赖关系,没有隐藏的假设。

话虽如此,SQL Server确实提供了数据库快照,使用CREATE DATABASE ... AS SNAPSHOT OF创建并使用RESTORE DATABASE ... FROM SNAPSHOT = ...恢复。由于这仅涉及丢弃修改后的数据,因此它比完全还原快得多。如果多人想要运行测试,它仍然不可避免地会遇到并发问题。

最新更新