我有一个很大的数据库,需要几分钟才能从bak文件中恢复。我必须使用web应用程序运行几个测试,然后放弃所有这些更改以重复测试。这就是我目前正在做的工作流程,我的问题是有一个更好/更省时的方法。
db还原选项需要很长时间,我在想,如果我可以使用类似CHECKPOINTS
之类的功能,或者其他特性,我就不必再恢复完整的备份了。
编辑:我想知道是否存在使用内置sql-server特性减少恢复时间的解决方案。想象一下,如果恢复需要5分钟,那么无论5分钟是长时间还是短时间相对于每个用户和每个用例。
发布于 2019-10-11 16:40:08
首先,“我有一个巨大的数据库,包含了我在每次测试之后运行几次测试并恢复的所有数据”,从长远来看,在我的经验中,这不是一个非常好的模式--仍然需要先把这个庞大的数据库放在某个地方(您不想使用生产,是吗?),人们不允许查看数据的可能问题,如果实例被共享的话并发问题,以及依赖于当前特定数据的最糟糕、最脆弱的测试。两周后,你会发现你的测试不再有效,人们也说不出原因。
最好的长期解决方案是使用SSDT创建一个最小的数据库项目,它可以作为您可以签入源代码管理来启动的东西。作为LocalDB部署,只插入测试所需的数据,测试,然后丢弃它。没有依赖,没有隐藏的假设。
话虽如此,Server确实提供了数据库快照,它是用CREATE DATABASE ... AS SNAPSHOT OF
创建并用RESTORE DATABASE ... FROM SNAPSHOT = ...
恢复的。因为这只需要丢弃修改过的数据,所以它比完全恢复要快得多。如果多个人想要运行测试,它仍然不可避免地会遇到并发问题。
https://stackoverflow.com/questions/58344684
复制相似问题