如果我们有一套端到端的自动化测试,目标是每个测试都从数据库中相同的(初始)数据集开始,以获得可靠的结果。
是否有人发现了任何好的解决方案,如何在测试执行期间快速恢复在SQL Server数据库中所做的更改?
总是有截断所有表并通过SQL重新导入初始数据的可能性。但我在想有没有更优雅的。例如恢复到快照
有人试过吗
RESTORE DATABASE FROM DATABASE_SNAPSHOT
SQL Server feature?它够快吗?它的速度取决于创建快照时数据库中的数据量,还是取决于自创建快照以来进行了多少更改?
非常感谢您的意见。
快照功能的工作原理是" capture "将原始数据库页面在第一次修改之前保存到快照。这是一种写后复制。原始页面转到快照,然后修改正常进行。
当您还原快照时,这些更改的页面将被写回源数据库。所以时间和你改变了多少数据成正比。实际上是数据库页面被修改了多少。假设您更改了100条记录,但它们碰巧在不同的页面上,那么需要恢复100页。所以数据的局部性很重要。
而且,由于您在写入之前对更改的页面进行了复制,因此预计您的修改将花费更长的时间。
根据我的经验,它已经足够快了,但这取决于你要处理多少数据。
我可能不会去截断/导入,因为我发现它是更多的工作。如果在测试期间更改了大量数据,恢复完整备份可能会更容易/更快。你得看看什么最适合你。