Sql 将大量数据复制到多个订阅服务器的选项

Sql 将大量数据复制到多个订阅服务器的选项,sql,sql-server,database-replication,Sql,Sql Server,Database Replication,我正在使用事务复制,遇到了一个问题。问题是,有一个表存储每个站点的库存数量数据,而且非常庞大。它占总数据的90%。每个订户位于不同的站点,实际上只需要其所在站点的库存QTY。由于这个大表,初始快照需要很长时间,因此我正在寻找一些解决方案 到目前为止,我想到了一些可能的解决方案: 从备份中初始化快照。这将非常完美,除非订阅服务器需要重新初始化。这些网站位于一个互联网不可靠的国家,因此用户长期离线的可能性相当高 压缩快照-根据文档,他们建议使用可靠的网络,但该网络不可用 按站点过滤大表换句话说,只复

我正在使用事务复制,遇到了一个问题。问题是,有一个表存储每个站点的库存数量数据,而且非常庞大。它占总数据的90%。每个订户位于不同的站点,实际上只需要其所在站点的库存QTY。由于这个大表,初始快照需要很长时间,因此我正在寻找一些解决方案

到目前为止,我想到了一些可能的解决方案:

从备份中初始化快照。这将非常完美,除非订阅服务器需要重新初始化。这些网站位于一个互联网不可靠的国家,因此用户长期离线的可能性相当高

压缩快照-根据文档,他们建议使用可靠的网络,但该网络不可用

按站点过滤大表换句话说,只复制订户站点的数据。我查了一下,很明显,它只适用于合并复制?也许切换到合并复制是一个更好的选择,这样我就可以使用参数化的行过滤器了

不要复制大表,而是用作业复制它-根据需要或根据时间表复制它。但是,我认为没有办法在这样复制数据之后启用表进行事务性复制,因此在再次运行作业之前,表将不同步


是否有人知道其他可能的解决方案。我愿意接受任何建议,如果可以解决问题,甚至可以切换到合并复制。

大表是否有一个SiteID列或某个列指示行属于哪个站点?是的,它有一个Location Code字段。我想我可以使用HOST_NAME()做一个参数化的行过滤器。这将需要一个子查询来查找位置代码映射到的物理计算机名。如果要坚持事务复制,可以使用静态行筛选器创建多个发布,每个位置一个发布,并让每个站点订阅其关联的筛选发布。我们已决定切换到单向合并复制,以便可以使用相同的发布筛选每个订阅服务器的数据。出于好奇,单向合并似乎比事务性合并更有效,因为它只复制最终结果,而不是一次复制每个事务。因此,如果一行被更新了数千次,您就必须复制这1000次更新,而使用merge,您只能复制1000次更新后的数据最终状态(假设不是持续更新)。至少我是这么想的…@Makolyte-你的最后陈述是绝对正确的。来自TechNet:“应用程序要求更改网络数据,而不是访问中间数据状态。例如,如果一行在与发布服务器同步之前在订阅服务器上更改了五次,则该行在发布服务器上仅更改一次,以反映网络数据更改(即第五个值)。”