3

我不知道如何表达这个问题,所以我会尝试解释。我在 SQL Server 2005 上有一个第三方数据库。我有另一个 SQL Server 2008,我也想“发布”第三方数据库中的一些数据。然后我将把这个数据库用作门户和报告服务的后端——它应该是数据仓库。

在目标服务器上,我想将数据存储在与第三方数据库不同的表结构中。我想对一些表进行非规范化,并且有很多列是不必要的。我还需要向一些需要根据存储在同一行中的数据更新的表添加其他字段。例如,有些 varchar 字段包含我想要填充其他列的信息。所有这些都应该清理数据并使其更容易报告。

我可以编写查询以在特定目标表中获取我想要的所有信息。但是,我希望能够使其与另一台服务器上的源保持同步。它不必立即更新(尽管那会很好),但我希望它可能每 10 分钟更新一次。有 100 的数千行数据,但数据的变化和新行的添加等并不大。

我环顾四周,但我仍然不确定实现这一目标的最佳方法。据我所知,复制不会做我需要的。我可以手动编写 t-sql 来执行更新,也许使用 Merge 语句,然后将其安排为使用 sql server 代理的作业。我也一直在看 SSIS,它看起来适合 ETL 之类的东西。

我只是不确定用什么来实现这一点,我希望得到一些关于如何去做这种事情的建议?任何建议将不胜感激。

4

3 回答 3

1

对于那些模式/属性没有改变的表,我仍然强烈推荐复制。

对于数据和/或关系发生显着变化的表,我建议您开发一个 Service Broker 实现来处理它。使用服务代理 (SB) 的高级方法是:

Table-->Trigger-->SB.Service >====> SB.Queue-->StoredProc(activated)-->Table(s)

我不会为此推荐 SSIS,除非您想进行诸如拨号导出/导入之类的操作。这对这种事情很好,但恕我直言,对于连续或短期增量数据分发来说太笨拙和麻烦了。

于 2009-10-03T17:49:54.007 回答
0

尼克,我自己走的是 SSIS 路线。我有每 15 分钟运行一次的作业,这些作业基于 SSIS,并且执行您正在尝试执行的操作。我们有一个庞大的关系数据库,然后我们想使用一个名为 Tableau 的产品在它之上进行复杂的报告。我们很快发现我们的关系模型并没有那么热,所以我用 SSAS 在它上面构建了一个多维数据集,并且该多维数据集每 15 分钟更新和处理一次。是的,SSIS 确实给人一种主要用于直接 ETL 工作的光环,但我发现它也可以用于像这样的简单快速工作。

于 2009-10-02T13:07:01.077 回答
0

我认为,分期和分区对于您的情况来说太多了。我现在在 SSIS 中实施同样的事情,但频率为 1 小时,因为我需要花一些时间进行支持活动。我确信使用 SSIS 是一种很好的方法。

在设计过程中,我想到了另一种实现自定义复制的方法,即自定义变更数据捕获 (CDC) 流程。通过这种方式,您可以获得接近实时的复制,但这是一件棘手的事情。

于 2009-10-03T20:13:12.073 回答