【问题标题】: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,您应该在过滤的情况下使用合并复制:'需要数据过滤,以便订阅者接收不同的数据分区。'
  • 我也一直在看,但还没来得及回复。您正在复制的网络如何?局域网、广域网、VPN?
  • @BrandonWilliams 非常感谢你。网络是广域网

标签: sql-server sql-server-2012 replication merge-replication transactional-replication


【解决方案1】:

对于这个问题中给出的设置,事务和合并复制类型都很好。
您需要考虑的唯一事项是:

  • 如果将数据传输到订阅服务器的延迟应该最小,请选择事务复制。
  • 如果您需要访问中间数据状态,请选择事务复制。
    例如,如果一行更改五次,事务复制允许应用程序响应每个更改(例如触发触发器),而不仅仅是对该行的净数据更改。

但是,您为应用程序选择的复制类型取决于许多因素。

以下是 docs.microsoft.com 上相关文章的链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2014-11-10
    • 2019-06-07
    相关资源
    最近更新 更多