我有两台 MS SQL 2005 服务器,一台用于生产,一台用于测试,并且两台服务器的恢复模型均为“完整”。我将生产数据库的备份恢复到测试服务器,然后让用户进行更改。
我希望能够:
- 回滚对测试 SQL 服务器所做的所有更改
- 应用自测试服务器最初恢复以来在生产 SQL 服务器上发生的所有事务,以便两台服务器具有相同的数据
我不想从备份文件进行完整的数据库恢复,因为对于我们的 +200GB 数据库来说,这需要太长时间,尤其是当所有更改的数据小于 1GB 时。
EDIT
根据下面的建议,我尝试使用 NoRecovery 恢复数据库,但无法创建处于该状态的数据库的快照。
我还尝试将其恢复到备用只读模式,该模式有效,然后我可以拍摄数据库快照,并且仍然将事务日志应用到原始数据库,但只要有针对它的快照,我就无法使数据库再次可写。
Running:
restore database TestDB with recovery
结果出现以下错误:
Msg 5094, Level 16, State 2, Line 1 The operation cannot be performed on a database with database snapshots or active DBCC replicas
首先,一旦您恢复了备份并将数据库设置为“已恢复”,就这样 - 您将never能够对其应用另一个事务日志备份。
但是,有数据库快照。我从未使用过它们,但我相信您可以将它们用于此目的。我认为您需要恢复数据库,将其置于“未恢复”模式(绝对不是备用模式),然后基于该模式生成快照。 (或者这是镜像?我几年前读到过这些东西,但从未有理由使用它。)
然后,当您想要更新数据库时,您可以删除快照,恢复“下一个”事务日志备份集,并创建一个新的快照。
但是,我认为这不会很好地发挥作用。除了这样做的管理和维护开销之外,如果测试人员/开发人员进行大量修改,您的数据库快照可能会变得非常大,甚至比原始数据库更大——这就是除了“原始”数据库。对于不经常修改的数据库,这可能可行,但对于大型 OLTP 系统,我有严重的怀疑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)