我们在启用了 CDC(变更数据捕获)的 SQL Server 2008 R2 (SP 1) 上托管了一个 SQL Server 数据库。
由于许可证到期重新安装 SQL Server 实例后(部署团队忘记安装正确的许可证 :( )我们将数据库附加到新安装的实例。
但是,当我们尝试通过执行启用它时,并没有为所有表启用 CDC
sys.sp_cdc_enable_table
我们有
未为更改数据捕获启用数据库“DBName”。确保设置了正确的数据库上下文并重试该操作。要报告为更改数据捕获启用的数据库,请查询 sys.databases 目录视图中的 is_cdc_enabled 列。
提示 CDC 未启用。
因此,我们尝试通过执行来启用它
sys.sp_cdc_enable_db
我们收到以下错误:
消息 22906,级别 16,状态 1,过程 sp_cdc_enable_db_internal,第 49 行
无法为更改数据捕获启用数据库“DBName”,因为当前数据库中已存在名为“cdc”的数据库用户或名为“cdc”的架构。这些对象是变更数据捕获唯一需要的。删除或重命名用户或架构,然后重试该操作。
尝试通过执行禁用 CDC 后
sys.sp_cdc_disable_db
我们又得到了同样的错误:
未为更改数据捕获启用数据库“DBName”。确保设置了正确的数据库上下文并重试该操作。要报告为更改数据捕获启用的数据库,请查询 sys.databases 目录视图中的 is_cdc_enabled 列。
我的猜测是 db 系统表和 SQL server 系统表之间存在一些不一致,导致 CDC 状态无效。
有没有办法解决这个问题?
任何想法表示赞赏。