我正在尝试将数据库从 Prod 环境 (11.0.6020.0) 还原到较低环境的服务器 (11.0.3128.0)。我意识到较低的有一个较旧的 SP,我们现在正在努力纠正它。恢复应该仍然有效,它已经持续了几个月,但我收到以下错误消息。我们最近刚刚为 CDC 启用了这个数据库,我没有在恢复中指定 keep_cdc。有人以前见过这个错误并且知道如何解决吗?
消息 22841,级别 16,状态 1,过程 sp_cdc_vupgrade,第 320 行 [批处理起始行 0] 无法升级为更改数据捕获启用的数据库“DBName”的元数据。执行操作“alter cdc.change_tables index change_tables_unique_idx with (drop_existing = on)”时发生故障。返回的错误是 4922:“第 102 行,状态 9,ALTER TABLE ALTER COLUMN column_id 失败,因为一个或多个对象访问此列。”。使用操作和错误来确定失败的原因并重新提交请求。
RESTORE DATABASE [DBName]
FROM DISK = @FileToRestore WITH
MOVE 'DBName' to 'W:\Data\DBName\DBName.mdf',
MOVE 'AmexDB_log' to 'W:\Logs\DBName\DBName_Log.ldf',
NOUNLOAD, REPLACE , FILE = 1, STATS = 10
GO
我们能够通过将较低的环境升级到 SP3 来解决这个问题。一旦完成,恢复就完成了,没有任何错误。