2

我想运行下面的重命名不能重命名为“复制”一列,可能是由于CDC

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显示replicated = yes。

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

+0

CDC仅用于跟踪DDL更改 - 它不会阻止它们。您正在尝试更改标记为复制的表中的列。检查复制监视器以获取更多信息:http://msdn.microsoft.com/en-us/library/ms151780.aspx – 2010-02-21 19:05:12

+0

我怀疑CDC是问题所在,因为它似乎在复制基础结构上实现。 – usr 2010-02-21 19:07:40

+1

只是一个澄清...... CDC追踪DML的变化,而不是像OMG Ponies所说的那样改变DDL。 – 2011-03-23 08:36:03

回答

1

你做错了顺序。您必须关闭表格上的CDC(打开数据库中的CDC),然后更改列,然后打开表格上的CDC。 要解决您的问题,您必须打开数据库上的CDC,然后在桌上,关闭桌上的CDC,重命名列,打开桌上的CDC。

+1

这是一个解决错误的方法,但它似乎没有完全解决原始问题:“除了删除现有CDC信息并重新启用CDC以外,我有其他选择吗?”。关闭桌上的CDC会删除所有的CDC数据(我认为)。 – 2011-03-23 08:29:47

+0

这个答案不正确。数据被删除。 – 2017-11-02 13:46:18