SQL 用于快速测试的服务器数据库还原
SQL Server database restore for quick testing
我有一个大数据库,需要几分钟才能从 bak 文件恢复。我必须 运行 使用 Web 应用程序进行一些测试,然后放弃所有这些更改以重复测试。这是我目前正在做的工作流程,我的问题是有没有better/less耗时的方法。
- 从 bak 文件恢复数据库(bak 文件大约 5gb,大约需要 1 分钟)
- 使用网络应用程序执行测试。
- 删除数据库,然后从 bak 文件重新恢复它(步骤 1)
数据库恢复选项需要很多时间,我在想我是否可以使用类似 CHECKPOINTS
的东西,或者我不必再次恢复完整备份的其他一些功能。
编辑:我想知道是否存在可以使用内置 sql 服务器功能减少恢复时间的解决方案。想象一下,如果恢复需要 5 分钟,- 5 分钟是长时间还是短时间是相对于每个用户和每个用例的.
首先,根据我的经验,"I have an enormous database with all the data that I run a few tests against and revert after every test" 长期 运行 并不是一个很好的模式——首先在某个地方获取庞大的数据库仍然是个问题(你不需要想使用 production,是吗?),不允许人们查看数据的可能问题,共享实例时的并发问题,以及依赖于具体数据存在。将视线移开两周,您会发现您的测试不再有效,而且人们无法说出原因。
最好的长期解决方案是使用 SSDT 创建一个最小的数据库项目,它可以作为您可以签入源代码管理以启动的东西。部署为 LocalDB,仅插入测试所需的数据,测试,然后丢弃它。没有依赖性,没有隐藏的假设。
话虽如此,SQL 服务器确实提供 database snapshots, created with CREATE DATABASE ... AS SNAPSHOT OF
and reverted to with RESTORE DATABASE ... FROM SNAPSHOT = ...
。由于这只涉及丢弃修改后的数据,因此它比完全恢复要快得多。如果多人想 运行 测试,它仍然不可避免地会遇到并发问题。
我有一个大数据库,需要几分钟才能从 bak 文件恢复。我必须 运行 使用 Web 应用程序进行一些测试,然后放弃所有这些更改以重复测试。这是我目前正在做的工作流程,我的问题是有没有better/less耗时的方法。
- 从 bak 文件恢复数据库(bak 文件大约 5gb,大约需要 1 分钟)
- 使用网络应用程序执行测试。
- 删除数据库,然后从 bak 文件重新恢复它(步骤 1)
数据库恢复选项需要很多时间,我在想我是否可以使用类似 CHECKPOINTS
的东西,或者我不必再次恢复完整备份的其他一些功能。
编辑:我想知道是否存在可以使用内置 sql 服务器功能减少恢复时间的解决方案。想象一下,如果恢复需要 5 分钟,- 5 分钟是长时间还是短时间是相对于每个用户和每个用例的.
首先,根据我的经验,"I have an enormous database with all the data that I run a few tests against and revert after every test" 长期 运行 并不是一个很好的模式——首先在某个地方获取庞大的数据库仍然是个问题(你不需要想使用 production,是吗?),不允许人们查看数据的可能问题,共享实例时的并发问题,以及依赖于具体数据存在。将视线移开两周,您会发现您的测试不再有效,而且人们无法说出原因。
最好的长期解决方案是使用 SSDT 创建一个最小的数据库项目,它可以作为您可以签入源代码管理以启动的东西。部署为 LocalDB,仅插入测试所需的数据,测试,然后丢弃它。没有依赖性,没有隐藏的假设。
话虽如此,SQL 服务器确实提供 database snapshots, created with CREATE DATABASE ... AS SNAPSHOT OF
and reverted to with RESTORE DATABASE ... FROM SNAPSHOT = ...
。由于这只涉及丢弃修改后的数据,因此它比完全恢复要快得多。如果多人想 运行 测试,它仍然不可避免地会遇到并发问题。