症状
假设你在 Microsoft SQL Server 2014、2016或2017中附加了可用于更改数据捕获的数据库。 如果存在要在数据库启动期间重做的事务,则更改数据捕获可能处于不一致状态,即,更改数据捕获处于禁用状态,但更改数据捕获对象仍然存在。 此外,你可能会遇到以下情况:
-
当您尝试使用 sp_cdc_disable_db 的存储过程禁用此数据库的变更数据捕获时,将收到以下错误消息:
数据库 DatabaseName未启用变更数据捕获。 请确保设置了正确的数据库上下文,然后重试该操作。 若要报告已启用 "更改数据捕获" 的数据库,请查询 sys.databases 目录视图中的 "is_cdc_enabled" 列。
-
当您尝试使用 sp_cdc_enable_db 的存储过程为此数据库启用变更数据捕获时,将收到以下错误消息:
消息22906、级别16、状态1、过程 sp_cdc_enable_db_internal、 LineNumber行 无法为更改数据捕获启用数据库 DatabaseName ,因为当前数据库中已存在名为 " 用户名 " 的数据库用户或名为 SchemaName的架构。 这些对象仅在更改数据捕获时才需要。 删除或重命名用户或架构,然后重试该操作。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。