积极答复者
修改复制表的列类型失败

问题
-
环境:sql server 2005企业版 ,补丁打到sp4,windows 2003.
一个发布中有很多个表,对某个表做列的修改,脚本如下:
alter table Brand
alter column BrandEnName nvarchar(80) not null ---原来类型为varchar
报错:
消息 4928,级别 16,状态 1,第 1 行
无法更改列 'BrandEnName',因为它是 'REPLICATED'。
但是我在测试环境中,数据库版本,windows版本都一致的情况下做测试,修改是成功的(订阅表的列的类型确实变成了nvarchar)
后来把Brand表从发布的项目中移除,再去修改,还是报同样的错。这个我就很疑惑了。这个表没有做复制,为什么还是报错呢?大侠们给分析分析
答案
-
曾经偶尔遇到过这种情况,是从2000升级到 2005, 复制清理不干净
可以使用 sys.tables 来查询一下表被同步使用的情况
select * from sys.tables where name = 'Brand'
is_published 对象为发布对象。
is_schema_published 仅发布对象的架构。
is_replicated 1 = 使用快照复制或事务复制发布表。
has_replication_filter 1 = 表具有复制筛选器。
is_merge_published 1 = 使用合并复制发布表。
is_sync_tran_subscribed 1 = 使用立即更新订阅来订阅表
- 已标记为答案 Michelle GeModerator 2014年2月27日 3:20
全部回复
-
曾经偶尔遇到过这种情况,是从2000升级到 2005, 复制清理不干净
可以使用 sys.tables 来查询一下表被同步使用的情况
select * from sys.tables where name = 'Brand'
is_published 对象为发布对象。
is_schema_published 仅发布对象的架构。
is_replicated 1 = 使用快照复制或事务复制发布表。
has_replication_filter 1 = 表具有复制筛选器。
is_merge_published 1 = 使用合并复制发布表。
is_sync_tran_subscribed 1 = 使用立即更新订阅来订阅表
- 已标记为答案 Michelle GeModerator 2014年2月27日 3:20