我正在使用SSIS在两个数据库之间同步数据。我过去使用过SSIS和DTS,但我通常会为这种性质的应用程序编写一个应用程序(我是编码器,它对我来说更简单)。如何克服SSIS调试性能差的问题?
在我的软件包中,我使用返回大约15,000行的SQL Task。我已经把它和一个Foreach容器连接起来了,在这个容器中,我将结果集列的值赋给变量,然后将这些变量映射到提供给另一个SQL任务的参数。
我遇到的问题是调试,而不仅仅是更复杂的调试,如断点和运行时评估值。我的意思是,如果我在调试而不是没有调试的情况下运行,需要几个小时才能完成。 我结束了重写的过程在Delphi中,下面就是我想出了:
完整的数据推送:
这拉15000行,更新的目标表的每一行,然后再换11000行并更新每行的目标表。
调试:
Delphi应用程序:139S
SSIS 4小时46分
不调试:
Delphi应用程序:132S
SSIS:384s
的更新数据:
这拉3,000行,但没有更新对目的地表格是必需的或是做出的。然后它将拉出11,000行,但是,不需要更新,也不需要对目标表进行更新。
调试:
Delphi应用程序:42s中
SSIS 1小时10分
不调试:
Delphi应用程序:34S
SSIS:205S
奇怪的是的,我感觉大部分时间花费在调试上只是更新Visual Studio中的UI元素。如果我观察进度选项卡,每次迭代都会将一个节点添加到树中(总计数千),随着进程的继续,这个节点变得越来越慢。试图停止调试通常不起作用,因为Visual Studio似乎陷入了更新UI的循环中。如果我检查SQL Server的分析器,则没有正在进行的实际工作。我不确定机器是否重要,但它应该超过这个工作(四核,4个ram,512 mb视频卡)。
这种行为是否正常?正如我所说的,我是一个交易编码人员,所以我没有任何问题为这类事情编写应用程序(实际上,编写应用程序比在SSIS中“绘制”应用程序花费的时间少得多,但我认为在SSIS中完成更多工作时边距会缩小),但我试图找出像SSIS和DTS这样的东西适合我的工具箱。到目前为止,没有任何关于它给我留下了深刻印象也许我以某种方式滥用或滥用SSIS?
任何帮助将不胜感激,在此先感谢!