将大量数据复制到复制数据库

时间:2014-12-11 11:25:22

标签: sql-server transactional-replication

我有一个本地SQL Server数据库,我从远程SQL Server数据库复制大量数据。本地版本为2008,远程版本为2012。

远程数据库具有到一个本地数据库和另一个远程数据库的事务复制设置。这一切都很完美。

我创建了一个SSIS包,用于清空目标表(远程数据库),然后使用Data Flow对象添加源中的数据。为了灵活性,我将每个表都包含在其中Sequence Container(这允许我一次运行一个或多个表)。数据流设置设置为Keep Identity

目前,在运行SSIS包之前,我删除了复制设置,然后运行包。程序包完成后,我会重新创建复制设置并重新初始化订阅者。

我是这样做的(删除复制然后重新创建),以免因使用复制命令使服务器过载。虽然大多数表格的行数在10到1000之间,但其中有几行超过3500万。

是否建议清空和重新加载大型复制数据库的数据?

我不想将我的本地数据库复制到远程数据库,因为这并不总是合适的,并且由于更复杂的权限的性质,执行本地数据库的恢复和恢复也不会起作用,远程数据库等。

每次删除和重新创建复制设置都不是世界末日,因为我已经编写了所有脚本。我确信必须有一种推荐的方法来管理这个...

1 个答案:

答案 0 :(得分:1)

不这样做。空/重新加载很糟糕。尝试通过合并更新表 - 这样您就可以避免丢弃并重新创建,这也将导致2次复制操作。将新数据加载到另一台服务器(未复制)上的临时表中,然后将它们合并到复制表中。如果大量数据不变,这将严重降低复制负载。