将数据从生产数据库移动到数据仓库(SQL Server)

时间:2013-02-20 11:57:34

标签: sql sql-server tsql ssis

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

生产数据库中的模式很旧,所以一旦我们在DW DB中有数据,我们就需要一些额外的字段(例如,从prod db的'date'和'time'中计算出正确的datetime colum整数列。(不要问,它已经老了。)

我们正在内部讨论如何以有效的方式做到这一点。现在,它是在一个令人毛骨悚然的SSIS工作中实现的,它基本上每晚都会拆掉整个DW DB并从prod db再次构建它,进行数据转换。这不能很好地扩展。

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

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

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

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

复制引起了我的兴趣,因为它在移动数据时完全摒弃了整个CRUD的“困境”,但你可能是对的 - 只要SSIS逻辑比现在更聪明一点,SSIS仍然会更好。

数据可能相当大,所以像我们今天一样擦除和重新导入所有内容都是一个需要解决的问题

2 个答案:

答案 0 :(得分:1)

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

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

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

如果您指定要解决的SSIS的真正问题,可能会更容易提供帮助。

答案 1 :(得分:0)

快速更新:SQL Server的CDC功能似乎是我们需要研究的内容,此功能与SSIS很好地集成。感谢关于Slowly Changing Dimensions和SSIS的暗示!