Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法重命名为“的列”;“复制”;,可能是因为疾病预防控制中心_Sql Server_Sql Server 2008_Replication_Cdc_Change Data Capture - Fatal编程技术网

Sql server 无法重命名为“的列”;“复制”;,可能是因为疾病预防控制中心

Sql server 无法重命名为“的列”;“复制”;,可能是因为疾病预防控制中心,sql-server,sql-server-2008,replication,cdc,change-data-capture,Sql Server,Sql Server 2008,Replication,Cdc,Change Data Capture,我想运行以下命令: EXECUTE sp_rename N'dbo.Semesters.IsPublic', N'Tmp_ShowNCs', 'COLUMN' 我得到了错误 Msg 4928, Level 16, State 1, Procedure sp_rename, Line 547 Cannot alter column 'IsPublic' because it is 'REPLICATED'. Msg 0, Level 20, State 0, Line 0 A severe e

我想运行以下命令:

EXECUTE sp_rename N'dbo.Semesters.IsPublic', N'Tmp_ShowNCs', 'COLUMN' 
我得到了错误

Msg 4928, Level 16, State 1, Procedure sp_rename, Line 547
Cannot alter column 'IsPublic' because it is 'REPLICATED'.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.
我已为此表启用了更改数据捕获(CDC)。也许这就是为什么这个专栏被“复制”的原因。SSMS显示已复制=是


所以我想知道这是正常还是错误。我想保持CDC打开,但重命名此列。除了删除现有CDC信息并重新启用CDC之外,我还有其他选择吗?

您的操作顺序错误。您必须关闭表上的CDC(数据库上的CDC已打开),然后更改列,然后打开表上的CDC。
若要撤消您的问题,您必须打开DB上的CDC,然后打开table,关闭table上的CDC,重命名列,打开table上的CDC

CDC只用于跟踪DDL更改—它不会阻止更改。您正试图更改表中标记为复制的列。查看复制监视器以了解更多信息:我怀疑CDC是问题所在,因为它似乎是在复制基础架构之上实现的。请澄清一下。。。CDC跟踪DML更改,而不是OMG Ponies所说的DDL更改。这是一个解决错误的方法,但它似乎没有完全解决最初的问题:“除了删除现有CDC信息和重新启用CDC之外,我还有其他选择吗?”。关闭表上的CDC会删除它的所有CDC数据(我认为)。