SQL Server事务复制 - 如何复制除特定列的值以外的所有文章

时间:2015-09-14 20:21:12

标签: sql-server replication transactional

我需要复制表的所有文章,同时防止复制一列数据。取消选中文章会删除整个列,从而更改其架构。但是,我想维护该列而不更新其数据。

1 个答案:

答案 0 :(得分:0)

您想要订阅服务器上的整个架构,但是您希望更改某些列的复制,是否正确?这可以做到,但需要一些工作。我可以看到两个选项:

  1. 在订阅者上创建触发器,触发器内部将包含忽略对上述列的更改的逻辑。此选项的缺点是触发器会对性能产生影响。我避免使用此选项。
  2. 利用custom stored procedures复制更改。这样做,您修改提供的复制存储过程,以排除您要在订阅服务器上排除的列。当复制将更改应用于订户时,它将忽略您指定的更改。
  3. 利用replicating the execution of a stored proc。这样做,如果您标记要复制的存储过程,则不会复制存储过程对任何已发布表所做的任何更改,只会将proc调用及其参数发送给订阅者并执行。需要修改订户上的存储过程以排除更新提到的列。此外,表文章需要将其ins / upd / del属性设置为不执行任何操作。为了确保对发布方的表所做的单独更改不会复制到订阅服务器,您可以将ins / upd / del操作设置为文章中的任何内容。
  4. 在所有情况下,它很可能会要求您使用发布的@post_snapshot_script,它将在重新启动/快照后在订阅者上创建对象。

    IMO,我会选择#2选项。