复制过滤的数据子集:合并还是事务复制?

时间:2014-11-18 16:37:31

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

首先感谢阅读。

我需要复制基于连接过滤器的数据子集;基于与其他表的连接进行过滤(Microsoft:"使用连接过滤器,您可以将行过滤器从一个已发布的表扩展到另一个表。")。这是设置:

  • SQL Server 2012;
  • 订阅事务复制的复制源
  • 复制需要一个方向同步(从发布者到订阅者);
  • 只有一个订阅者/订阅者;
  • 交易量不大的小型数据集;
  • WAN网络。

到目前为止我所建立的:

选项1 - 创建视图并通过事务复制将这些视图复制到表。

  • 专业人士:未使用任何触发器,

  • 缺点:密钥,约束等对象未被复制

选项2 - 使用合并复制和联接过滤器并设置@subscriber_upload_options = 2(仅下载)。

  • 专业人员:本机MS功能,所有对象都已复制

  • 缺点:合并复制使用触发器,这些不会被批量加载触发。

这两种方法的结果完全相同。然而,该技术有所不同,例如使用的不同代理。据我所知,合并复制尤其适用于服务器 - 客户端体系结构,这不是我的情况,但它可以工作..

由于结果是一样的,我有点怀疑我应遵循哪种方法。我希望你能给我一些考虑或建议我应该遵循的方法。

1 个答案:

答案 0 :(得分:1)

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

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

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

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