小编teb*_*eth的帖子

将数据库附加到 SQL Server 2008 R2 实例后,CDC 失败

我们在启用了 CDC(变更数据捕获)的 SQL Server 2008 R2 (SP 1) 上托管了一个 SQL Server 数据库。

由于许可证到期重新安装 SQL Server 实例后(部署团队忘记安装正确的许可证 :( )我们将数据库附加到新安装的实例。

但是,并非所有表都启用了 CDC 当我们尝试通过执行来启用它时

sys.sp_cdc_enable_table
Run Code Online (Sandbox Code Playgroud)

我们有

未为更改数据捕获启用数据库“DBName”。确保设置了正确的数据库上下文并重试该操作。要报告为变更数据捕获启用的数据库,请查询 sys.databases 目录视图中的 is_cdc_enabled 列。

提示未启用 CDC。

因此,我们尝试通过执行来启用它

sys.sp_cdc_enable_db
Run Code Online (Sandbox Code Playgroud)

我们收到以下错误:

消息 22906,级别 16,状态 1,过程 sp_cdc_enable_db_internal,第 49 行
无法为更改数据捕获启用数据库“DBName”,因为当前数据库中已存在名为“cdc”的数据库用户或名为“cdc”的架构。Change Data Capture 只需要这些对象。删除或重命名用户或架构,然后重试该操作。

尝试通过执行禁用 CDC 后

sys.sp_cdc_disable_db
Run Code Online (Sandbox Code Playgroud)

我们又得到了同样的错误:

未为更改数据捕获启用数据库“DBName”。确保设置了正确的数据库上下文并重试该操作。要报告为变更数据捕获启用的数据库,请查询 sys.databases 目录视图中的 is_cdc_enabled 列。

我的猜测是 db 系统表和 SQL Server 系统表之间存在一些不一致,导致 CDC 处于无效状态。

有没有办法解决这个问题?

任何想法表示赞赏。

sql-server sql-server-2008 sql-server-2008-r2

4
推荐指数
1
解决办法
3257
查看次数