我是 SSIS 的相对初学者,所以我可能会做一些愚蠢的事情。
我有一个过程涉及遍历异构队列并一次处理对象 1。该过程目前正在“设置逻辑”及其丢弃的东西中完成。我被要求以循环的方式对其进行返工,因此已经为我做出了这个决定。
我选择在 1 个包中实现队列逻辑,在另一个包中实现实际处理。
考虑到这一切都进行得比较顺利……
我现在已经启动并运行了该过程,但是速度很慢。每个项目 9 秒。显然我不能提出这个解决方案。:-)
我注意到一件事,每个循环的 1.5 - 2 秒在队列循环中的 ExecutePackage 任务上。
我不知道如何获得一个硬数字,我正在使用闪烁的绿框方法进行性能调整。其他步骤似乎非常快。添加索引,将 sql 更改为 sps,所有常用技巧都有帮助。
就变成白色/黄色/绿色的框而言,UI 是否可行?有些任务在进度选项卡中报告时间,有些似乎没有。所以我在数黄色时间。
调用子包应该那么贵吗?我所做的 1 个更改是我将“RunInASeperateProcess”更改为 FALSE。我这样做是因为子包会产生以下消息:
错误:脚本任务中的 0xC0012024:任务“脚本任务”无法在此版本的集成服务上运行。它需要更高级别的版本。任务失败:脚本任务
我所做的阅读似乎提倡多种包装。任何人有任何计数器模式?我应该坚持到底吗?我开始换成 1 个包裹。复制/粘贴似乎不适用于 SequenceContainers。我还需要重新创建父包中的所有变量。可行,但我不确定这是答案。
有谁知道他们愿意分享的任何调优资源/网站/书籍。
更新 - 我一直在努力找出问题所在。我在想这是传递变量值的包配置。我不认为是这样。我可以将变量传递给另一个没有任何内容的包,而且速度很快。
我可以通过向其中添加两个连接管理器来使琐碎的子包变慢。我突然意识到我可能在主包和子包中都建立和断开了与 Oracle 服务器和 SQL 服务器的连接。
我在这个观察中正确吗?
有什么办法可以重用两个包之间的连接吗?当我用谷歌搜索时,我看到的大部分内容都是关于传递连接字符串的建议。
更新 - 我将两个包合二为一。这种性能不是每个项目大约 1.25 秒,低于大约 9 秒。我可以指出的唯一改变是我现在重用单个连接而不是建立多个连接。
谢谢,感谢您提供的任何帮助。
格雷格