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_Database Replication - Fatal编程技术网

Sql server 计算列的复制问题

Sql server 计算列的复制问题,sql-server,sql-server-2008,database-replication,Sql Server,Sql Server 2008,Database Replication,因此,情况是有两个服务器pub_server(发布服务器)和sub_server(订阅服务器)。 pub_服务器上有两个数据库:db1和db2 db1中存在一个表xyz_tbl,它被复制(事务性)到sub_服务器(发布者名称:publisher_old)。 我的任务是从publisher\u old中删除订阅和文章,并在db2中使用相同的文章xyz\u tbl和相同的订阅服务器sub\u服务器创建一个新的发布服务器publisher\u new 现在问题来了:xyz_tbl有一个计算列。因此,当

因此,情况是有两个服务器
pub_server
(发布服务器)和
sub_server
(订阅服务器)。 pub_服务器上有两个数据库:
db1
db2

db1中存在一个表
xyz_tbl
,它被复制(事务性)到
sub_服务器
(发布者名称:
publisher_old
)。 我的任务是从
publisher\u old
中删除订阅和文章,并在db2中使用相同的文章
xyz\u tbl
和相同的订阅服务器
sub\u服务器创建一个新的发布服务器
publisher\u new

现在问题来了:
xyz_tbl
有一个计算列。因此,当我为
publisher\u new
执行脚本时,复制监视器中出现错误

错误:
无法修改列“column\u name”,因为它是计算列或是联合运算符的结果

我正在使用
@sync\u type=“仅复制支持”
,因为订阅服务器上已经存在表(来自
发布服务器\u old
)。那么为什么分发服务器试图在订阅服务器上执行插入操作,这会产生上述错误

如果分发服务器正在尝试插入,那么复制是如何从
db1
工作的,即
publisher\u old

如何在复制中处理计算列。我找不到任何答案


请帮忙

大多数工作对于计算列不可用。这就是更新。 我建议不要复制计算列。您可以在复制数据库中再次计算它

另一种方法是使计算列成为实际列,然后进行复制


若要插入到计算列,则可以使kind属性等于PersistantReadOnly

但如果复制中持久化的计算列未被复制为其他对象的定义复制失败,并且如果添加,则应在bcp之前删除该列。最后,您只能通过在发布服务器上创建(dop和recreate)和复制bit将它们添加到订阅服务器上,然后您可能会遇到FK和索引的问题。

如何设置PersistantReadOnly属性?