复制经过过滤的数据子集:合并复制还是事务复制?
Posted
技术标签:
【中文标题】复制经过过滤的数据子集:合并复制还是事务复制?【英文标题】:Replicate a filtered subset of data: Merge or Transactional replication? 【发布时间】:2015-01-15 22:32:14 【问题描述】:首先感谢您的阅读。
我需要复制基于连接过滤器的数据子集;基于与另一个表的连接进行过滤(Microsoft:“使用连接过滤器,您可以将行过滤器从一个已发布的表扩展到另一个。”)。这是设置:
SQL Server 2012; 事务复制订阅上的复制源 复制需要是单向同步(从发布者到订阅者); 只有一个订阅者/订阅者; 事务不多的小数据集; WAN 网络。到目前为止我所建立的:
选项 1 - 创建视图并通过事务复制将其复制到表中。
优点:没有使用触发器,
缺点:不复制键、约束等对象
选项 2 - 将合并复制与加入过滤器一起使用并设置 @subscriber_upload_options = 2(仅限下载)。
优点:本机 MS 功能,复制所有对象
缺点:合并复制使用触发器,批量加载时不会触发这些触发器。
这两种方法的结果完全相同。但是技术有所不同,例如使用的不同代理。据我了解,合并复制特别适用于服务器 - 客户端架构,这不是我的情况,但..它可以工作..
因为结果是一样的,我有点怀疑我应该遵循哪种方法。我希望您能给我一些考虑或建议我应该遵循哪种方法。
【问题讨论】:
关于 Technet,您应该在过滤的情况下使用合并复制:'需要数据过滤,以便订阅者接收不同的数据分区。' 我也一直在看,但还没来得及回复。您正在复制的网络如何?局域网、广域网、***? @BrandonWilliams 非常感谢你。网络是广域网 【参考方案1】:对于这个问题中给出的设置,事务和合并复制类型都很好。 您需要考虑的唯一事项是:
如果将数据传输到订阅服务器的延迟应该最小,请选择事务复制。 如果您需要访问中间数据状态,请选择事务复制。 例如,如果一行更改五次,事务复制允许应用程序响应每个更改(例如触发触发器),而不仅仅是对该行的净数据更改。但是,您为应用程序选择的复制类型取决于许多因素。
以下是 docs.microsoft.com 上相关文章的链接:
"Types of Replication" "Transactional Replication" "Merge Replication"【讨论】:
以上是关于复制经过过滤的数据子集:合并复制还是事务复制?的主要内容,如果未能解决你的问题,请参考以下文章