所以情况是有两个服务器pub_server
(发布者)和sub_server
(订阅者)。
pub_server上有两个数据库:db1
和db2
。
db1中存在一个表xyz_tbl
,它被复制(事务性)到sub_server
(发布者名称:publisher_old
)。
我的任务是从publisher_old
中删除订阅和文章,并在db2上使用相同的文章publisher_new
和相同的订阅者xyz_tbl
创建新的发布者sub_server
。
现在问题是:xyz_tbl
有一个计算列。因此,当我执行publisher_new
的脚本时,我在Replication Monitor中收到错误。
错误:The column "column_name" cannot be modified because it is either a computed column or is the result of a UNION operator
我正在使用@sync_type="replication support only"
,因为用户已经存在表(来自publisher_old
)。那么为什么分销商试图在订户上执行插入而产生上述错误。
如果所有经销商都在尝试插入,那么复制是如何从db1
开始的,即publisher_old
。
如何在复制中处理计算列。我找不到任何答案。
请帮忙!
答案 0 :(得分:1)
大多数作品都不适用于计算列。这就是更新。 我建议不要复制计算列。您可以在复制数据库中再次计算它。
其他方法是将计算列作为实际列,然后复制。
如果要插入计算列,则可以使kind属性等于PersistantReadOnly。
答案 1 :(得分:0)
但是如果在复制中持久化的计算列没有被复制,因为其他对象的定义复制失败,如果添加它应该在 bcp 之前删除。最后,您只能通过在发布者上创建(dop 和重新创建)和复制位将它们添加到订阅者,然后您可能会遇到 FK 和索引问题。