Sql server SQL Server事务复制—如何复制除特定列的值以外的所有项目

Sql server SQL Server事务复制—如何复制除特定列的值以外的所有项目,sql-server,replication,transactional,Sql Server,Replication,Transactional,我需要复制表中的所有项目,同时防止复制一列数据。取消选中项目将删除整个列,从而更改其架构。但是,我希望在不更新列数据的情况下维护列。您希望订阅服务器上的整个架构,但希望复制对某些列的更改,对吗?这是可以做到的,但需要在你这方面做一些工作。我可以看到两种选择: 在订阅服务器上创建触发器,触发器内部将包含忽略对所述列的更改的逻辑。此选项的缺点是触发器会影响性能。我会避免这个选择 利用复制更改。这样做的目的是修改提供的复制存储过程,以排除订阅服务器上要排除的列。当复制将更改应用于订阅服务器时,它将忽略

我需要复制表中的所有项目,同时防止复制一列数据。取消选中项目将删除整个列,从而更改其架构。但是,我希望在不更新列数据的情况下维护列。

您希望订阅服务器上的整个架构,但希望复制对某些列的更改,对吗?这是可以做到的,但需要在你这方面做一些工作。我可以看到两种选择:

  • 在订阅服务器上创建触发器,触发器内部将包含忽略对所述列的更改的逻辑。此选项的缺点是触发器会影响性能。我会避免这个选择
  • 利用复制更改。这样做的目的是修改提供的复制存储过程,以排除订阅服务器上要排除的列。当复制将更改应用于订阅服务器时,它将忽略您指定的更改
  • 利用。这样做的目的是,如果将存储过程标记为要复制,则不会复制存储过程对任何已发布表所做的任何更改,只会将过程调用及其参数发送到订阅服务器并执行。需要修改订阅服务器上存储的进程,以排除更新所述列。此外,表格项目还需要将其ins/upd/del属性设置为“不做任何事情”。为了确保对发布服务器端的表所做的单个更改不会复制到订阅服务器,您可以在文章中将ins/upd/del操作设置为nothing
  • 在所有情况下,最有可能需要您使用发布的@post_snapshot_脚本,该脚本将在订阅服务器上创建一个reinit/snapshot后的对象


    依我看,我会选择选项2。

    不幸的是,这个问题很不清楚。在什么上下文中,你指的是“桌子”?当你说“文章”时,你的具体意思是什么?(sql server中的数据?)“取消选中”表示您正在处理某种类型的UI,但没有表示这是什么。最后,您还没有提供任何代码来显示您已经在做什么,因此我们不得不在真空中回答这个问题。很抱歉造成混淆。我的意思是,当我创建一个表的事务性发布时,我使用选择它的所有对象。(字段)对于exmaple:Id\u person、name和lastname。我想要的是保存订阅服务器中的所有对象,但不复制其中一个字段。订阅服务器中的结果将复制Id_person、name中的数据,但不是lastname。谢谢Greg,非常感谢!