gpt4 book ai didi

sql - 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 的测试实例

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:56 24 4
gpt4 key购买 nike

我有两台 MS SQL 2005 服务器,一台用于生产,一台用于测试,并且都具有完全恢复模式。我将生产数据库的备份还原到测试服务器,然后让用户进行更改。

我希望能够:

  • 回滚对测试 SQL 服务器所做的所有更改
  • 应用自测试服务器最初恢复以来在生产 SQL 服务器上发生的所有事务,以便两台服务器具有相同的数据

我不想从备份文件中恢复完整的数据库,因为这对于我们 +200GB 的数据库来说花费的时间太长了,尤其是当所有更改的数据都小于 1GB 时。

编辑

根据以下建议,我已尝试使用 NoRecovery 恢复数据库,但您无法为处于该状态的数据库创建快照。

我也试过将它恢复到备用只读模式,这可以工作,然后我可以拍摄数据库的快照,并且仍然将事务日志应用到原始数据库,但只要有快照,我就不能使数据库再次可写它。

运行:

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

最佳答案

首先,一旦您恢复了备份并将数据库设置为“已恢复”,就这样了——您将永远无法对其应用另一个事务日志备份。

但是,有数据库快照。我从未使用过它们,但我相信您可以将它们用于此目的。我认为您需要恢复数据库,将其置于“未恢复”模式——绝对不是待机——然后基于此生成快照。 (或者那是镜像?我几年前读到过这个东西,但从来没有理由使用它。)

然后,当您想要更新数据库时,删除快照,恢复“下一个”事务日志备份集,并创建一个新的快照。

但是,我认为这不会很好地工作。除了执行此操作的管理和维护开销之外,如果测试人员/开发人员进行大量修改,您的数据库快照可能会变得非常大,甚至比原始数据库还要大——而且除了“原始”数据库。对于不经常修改的数据库,这可能可行,但对于大型 OLTP 系统,我有严重的怀疑。

关于sql - 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 的测试实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com