【发布时间】:2013-02-16 22:50:50
【问题描述】:
我们在 SQL Server 2008 R2 (SP 1) 上托管了一个 SQL Server 数据库,并启用了 CDC(变更数据捕获)。
由于许可证到期重新安装 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 状态无效。
有什么办法可以解决吗?
感谢任何想法。
【问题讨论】:
标签: sql-server sql-server-2008 sql-server-2008-r2