非常大的表的SQL Server事务复制

时间:2008-12-05 18:04:00

标签: sql-server replication

我在相对较慢的VPN连接的不同端设置了两个SQL Server之间的事务复制。该设置是您标准的“立即加载快照”类型的事情,其中​​初始化订阅后它首先执行的操作是删除并重新创建订户端的所有表,然后开始执行所有数据的BCP。问题是有几个表中有几百万行,并且该过程要么a)花费 REALLY 长时间,要么b)只是平坦失败。我查看复制监视器时收到的消息是:

  • 进程正在运行,正在等待服务器的响应。
  • 查询超时已过期
  • 初始化

然后尝试重新启动批量加载过程(跳过已加载的任何BCP文件)。

我目前陷入困境,只是一遍又一遍地这样做。它现在已经运行了几天。

我的问题是:

  1. 鉴于网络连接速度太慢,我能做些什么来改善这种情况?也许一些设置或什么?我不介意等待很长时间,只要这个过程不能保持超时。

  2. 有更好的方法吗?也许做一个备份,拉链,复制然后恢复?如果是这样,复制过程在开始应用事务时如何知道在哪里获取,因为在我进行备份和恢复并在另一端恢复运行之间将进行更新。

2 个答案:

答案 0 :(得分:3)

是。 您可以应用initial snapshot manually

对我来说已经有一段时间了,但链接(进入BOL)可以替代设置用户。

编辑:来自BOL How-tos,Initialize a Transactional Subscriber from a Backup

答案 1 :(得分:1)

在SQL 2005中,您有一个“紧凑快照”选项,可以减少快照的总大小。当通过网络应用时,快照项“行进”压缩到潜在客户,然后在那里进行扩展。

我认为您可以通过比较标准和压缩快照的大小来轻松计算潜在的速度增益。

顺便说一下,合并复制有一个(非常)类似的问题here,但我认为在快照级别没有区别。