我有一个填充 SQL Server 2008 R2 数据仓库的 SSIS 包,当它从头开始重新创建 DW 时,它会对一个存储过程进行数百万次调用,该存储过程在计算方面进行繁重的工作。
问题是 SSIS 包需要几天才能运行,而且不应该花那么长时间。关键似乎是SSIS包调用SProc时,SProc返回结果大约需要2分钟。但是,如果我手动重新创建调用(在同一个数据库上),返回结果需要 <1 秒,这是我所期望的。
请参阅此屏幕截图,顶部是 SQL Profiler Trace,显示 SSIS 包的调用耗时 130 秒,底部是我对调用的重新创建,耗时 <1 秒。
http://screencast.com/t/ygsGcdBV
SProc 查询数据库,使用游标遍历结果,对记录对进行大量计算,并将数字合并为 2 个返回的结果。
然而,手动调用的时间向我表明,这不是 SProc 本身的问题,也不是数据库本身的任何索引问题,那么为什么 SSIS 包比手动调用花费的时间要长得多?
任何提示表示赞赏。
谢谢,