2013-04-05 13 views
3

我一直负责在网上得到一个复制我们的SQL Server 2005/2008数据库领域内部和每日更新。与每个站点的连接都受到监管,因此联机访问不是一种选择。现场数据库是工作组许可的。主服务器是企业用一些猥琐的处理器和内存。这些副本的目的是双重的:(1)在线备份和(2)ETL到数据仓库的源代码。最佳实践,以大量复制非常大的数据库与SSIS

大约有300个数据库,大部分都是相同的模式,分布在美国,加拿大和墨西哥。当前数据库大小在5 GB到1 TB之间。活动各不相同,但每台服务器每天大约有1,500,000个新行,大多数在2个表中。每个总共大约有50张桌子。每个站点的连接质量和带宽各不相同,但主站点具有足够的带宽来并行执行多个站点。

我在想SSIS,但不知道如何处理除桌面以外的任务。任何人都可以提供指导吗?

+0

您将如何识别更改? – billinkc 2013-04-05 15:35:19

+0

这些行使用顺序bigint标识。我从本地数据库获取站点的最大ID,并从远程获得具有更高ID的所有内容。标准SSIS在较小的桌子上。 - 从remote_table中选择id不在(从local_table中选择id)的id - 达到该效果。 – Metaphor 2013-04-05 16:04:47

回答

0

老实说,我会建议使用SQL复制。我们这么做很多,甚至可以通过拨号进行操作。它基本上最大限度地减少了所需的流量,因为只有更改被传输。

有几种拓扑结构。我们只使用合并(双向),但事务可能会满足您的需求(单向)。

我们的环境是一个单一的中央数据库,复制(使用过滤的复制文章)到各种网站数据库。中央DB是发布者。一旦到位,它就非常健壮,但是对模式升级来说是一件麻烦事。

然而,鉴于你的数据库是不是同质的,其中远程站点是发布者可能更容易对其进行设置,而中央SQL实例都有每个站点的数据库,这是一个用户向网站发布。这些文章甚至不需要过滤。然后您可以集中处理各个站点数据。

请注意,网站数据库需要安装复制组件(它们通常在安装程序中是可选的)。要设置为发布者,他们还需要本地配置(每个配置都有配置)。作为工作组版本,它可以充当发布者。 SQL Express不能充当发​​布者。

这听起来很复杂,但它实际上只是程序性的,而做这样的事情的内在机制。