因此,我想要一个快照结构,如下所示:获取快照1。运行一些代码,然后获取快照2。
然后运行更多的代码,数据库被恢复到快照2,然后更多的代码,然后快照2,N次。
然后,一旦完成了所有操作,数据库就会恢复到原来的状态,即快照1。基本上,我希望在还原快照时不需要删除现有的快照,而是在快照2中以某种方式“存储”快照1,当加载快照2时,快照1将再次用于后续的还原。
这似乎是可能的,因为如果快照1在创建快照2之前被“冻结”,那么一旦恢复到快照2,就不应该阻止快照1的工作,因为数据库状态与冻结和创建快照2时相同。
这个是可能的吗?是否需要创建系统表的快照?
发布于 2018-09-21 05:25:28
这是不可能的,快照不是“分层”的,所以快照2可以恢复到快照1状态。
在Server中,数据库快照仅在源数据库中更改时才保留每个页面的原始状态。快照2不是保存快照1中已更改的页,而是保存原始源数据库中的更改页。
步骤2中“如何将数据库还原为数据库快照”下的文档强调了这一点。
您最好的选择是复制原始数据库,然后对复制的数据库进行快照。根据复制的数据库的快照运行“快照2”测试。然后,您可以轻松地将快照还原为多个测试,并返回到测试前的状态,完成后,只需删除复制的数据库即可。以这种方式,您的原始数据库将不受测试的影响。
https://dba.stackexchange.com/questions/218194
复制相似问题