我遇到一个问题,无法更改之前没有给我们带来任何问题的 CDC 表。
我们在 cdc 表上运行 alter 语句来向表中添加一列,现在我们开始面临与此相关的错误。
我们尝试运行的查询是
ALTER TABLE cdc.dbo_TABLE_NAME_CT
ADD processed BIT DEFAULT 0 NULL
现在返回以下错误
消息 2104,级别 16,状态 13,行 34
无法更改错误:8277,严重性:-1,状态:0。(参数:)。由于格式化过程中出现错误,因此以简洁模式打印错误。跳过跟踪、ETW、通知等。'dbo_TABLE_NAME',因为您没有权限。
我正在使用 SQL Server 2016(v13.0.7045.2)。
在 13.0.7029 SQL 服务器上,我们能够运行 alter 命令,因此感觉好像某些内容已作为补丁的一部分发生更改。
该问题与此处的问题类似https://stackoverflow.com/questions/79075830/error-while-trying-to-alter-cdc-table-on-sql-server
这种情况已经突然在多个环境中发生,以前运行正常,我不确定是否作为新补丁的一部分发生了某些变化导致了这种情况。
我知道不建议更改 cdc 表,但这之前没有给我们带来任何问题。
我想知道是否有人对此有任何想法,因为我有点不确定该怎么办。
我不确定这是预期的行为还是错误——Microsoft 服务包中没有提到他们已采取某些措施来禁用向表中添加列的功能。
更重要的是,如果事情确实是这样发展的话,我们需要做出相应的调整,但现在我不知道为什么这个功能突然停止工作了。
这从未得到支持。
来自文档(重点添加):
变更表已明确列出并且已
is_ms_shipped
设置为 1。使用任何待处理的更改数据,然后禁用并重新启用表上的 CDC。
不幸的是,错误信息有些混乱。
如果您无法以支持的方式执行此操作,则启用全局跟踪标志 15006 [1]将使您的
ALTER TABLE
语句成功。如果您希望您的系统得到支持,您应该联系 Microsoft 支持并让他们授权为此目的使用跟踪标志。
[1] KB5042207 - SQL Server 2016 SP3 GDR 安全更新说明:2024 年 9 月 10 日中提到了此跟踪标志,但未为此目的进行记录。