2

我们正在为我们的软件开发一个报告模块,因此我们需要将一些数据从系统的生产数据库移动到一个数据仓库数据库中,该数据库将用作报告的数据源(SQL Server 报告)。

生产数据库中的模式已经很老了,所以一旦我们在 DW 数据库中有数据,我们将需要一些额外的字段(例如,从 prod 数据库的“日期”和“时间”整数列中计算出正确的日期时间列。 (别问了,老了。)

我们正在内部讨论如何以有效的方式做到这一点。现在,它是在一个丑陋的 SSIS 作业中实现的,基本上每晚都会拆除整个 DW DB,然后从 prod db 重新构建它,同时进行数据转换。这不能很好地扩展。

我一直在研究使用“更新”的技术,例如 SQL Server 复制以更精细的方式移动数据。

我对此的问题是: - 通过复制,“移动数据”部分显然得到了解决,但数据转换部分没有得到解决。我知道我可以在 DW DB 上创建更新触发器,但是每当我对订阅进行重新初始化时,所有与表相关的触发器似乎都会被擦除,这使得设置变得困难。

我不是在这里寻找一个确切的答案,更多的是关于采取这个方向的提示。对不起,如果问题有点模糊。

更新: 感谢下面的好点。这是我们向客户销售的软件,因此我非常喜欢为客户设置和维护尽可能少的“配置项”。今天的 SSIS 包是客户需要密切关注的另一个“项目”,以及它的时间表。

复制让我很感兴趣,因为它在移动数据时完全抽象了整个 CRUD “困境”,但你可能是对的 - SSIS 仍然会更好,只要 SSIS 逻辑的创建比现在更智能一点。

数据可能非常大,因此像我们今天所做的那样擦除和重新导入所有内容绝对是一个需要解决的问题。

4

2 回答 2

1

我不认为复制是一个好主意。如果源模式和目标模式完全相同,但正如您所指出的那样,它们不是。而且,你提到的 SSIS 正在做的所有计算,你仍然必须这样做,因为复制不会。

我认为 SSIS 是要走的路,我的意思是,这正是它存在的原因。

由于您在每次加载时都重新创建数据库,并且如果计算和更改的数量不大并且您不需要进行查找以从自然键中获取代理键,您可以在主数据库上创建视图以尝试模仿目标数据库的结构,以便您可以直接插入(几乎是映射到目标组件的源组件)

也许如果您指定要解决的 SSIS 的真正问题是什么,那么提供帮助会更容易。

于 2013-02-20T12:07:22.260 回答
0

只是对此的快速更新:SQL Server 的 CDC 功能似乎是我们需要研究的,该功能与 SSIS 很好地集成。感谢关于慢慢变化的维度和 SSIS 的提示!

于 2013-02-20T21:36:09.740 回答