我在生产数据库中使用SQL Server Change Data Capture 。令我惊讶的是,我发现将该数据库还原到较低环境时,CDC 数据没有保留——所有表、函数等都消失了,因为 SQL Server 在还原到任何其他环境的恢复阶段删除了 CDC 信息除了发起备份的数据库。
我了解到有一个RESTORE
选项 ,KEEP_CDC
它可以与RECOVERY
选项(作为还原链的最后一步)结合使用,以防止 CDC 信息被删除。
Transact-SQL 参考:RESTORE 参数
保持CDC
支持者:恢复
当在另一台服务器上恢复数据库备份或日志备份并恢复数据库时,应使用 KEEP_CDC 来防止更改数据捕获设置被删除。不允许在使用 NORECOVERY 选项还原备份时指定此选项。
我们的组织使用 NetBackup 作为备份和还原数据库的主要方式。获得备份文件之外的备份文件并不是一件容易的事,而且可能永远不会成为例行公事。我们有一个网站,可以让开发人员将生产备份恢复到其他环境,而无需亲自接触文件。
问题:那么我真正需要的是什么——查明 NetBackup 7.7 中是否有一种方法可以指定额外的还原选项,以便WITH_CDC
可以将其传递给 RESTORE 命令?还是 NetBackup 没有使用 trueRESTORE
语句?似乎它必须以某种方式使用内置的 SQL Server 还原功能,否则它无法正确触发还原的恢复阶段。或者也许我只是超出了我的深度,在这里。
我找不到太多关于 NetBackup 能力的信息,一位高级数据库工程师向我保证,NetBackup 7.7 做不到这一点。然而,我想知道他搜索得有多深,以及是否有人可能更熟悉该产品可能知道破解这样的东西的方法。显然 8.0 版即将推出,但我似乎又不能在网上找到一个可靠的文档来源,了解如何实现这一点。(似乎“附加命令行参数”是可能的,即使该选项未通过命名开关或其他设置明确支持。)
https://www.veritas.com/support/en_US.html
您必须找到该版本的 Netbackup 的 SQL 代理指南,看看它支持什么。从技术上讲,您需要 7.5 来备份 SQL 2012,但我认为该版本仅支持基本功能。我认为他们只在版本 8 中引入了一些高级功能,但我不能 100% 肯定地说。您将需要找到您的版本的文档并检查它支持什么
我刚刚发现 Veritas 自己回答了这个问题。虽然这个答案是针对 7.5 而不是 7.7,但我怀疑他们同时添加了这个。
www.veritas.com:Netbackup 是否支持 MS-SQL 功能“WITH KEEP_CDC”?
非常失望。