我正在使用SSIS在两个数据库之间同步数据。我以前使用过SSIS和DTS,但通常会为这类事情编写应用程序(我是一名程序员,这对我来说更容易)。
在我的包中,我使用一个SQL任务返回约15,000行。我将其连接到ForEach容器中,在其中将结果集列值分配给变量,然后将这些变量映射到传递给另一个SQL任务的参数。
我遇到的问题是调试,不仅仅是更复杂的断点和运行时评估等调试。我的意思只是,如果我带着调试运行它,而不是没有调试,它需要几个小时才能完成。 最终我用Delphi重写了这个过程,以下是我想出的内容:
完全推送数据: 这将提取15,000行,更新每一行的目标表,然后提取11,000行并更新每一行的目标表。
调试: Delphi应用:139秒 SSIS:4小时46分钟
无调试: Delphi应用:132秒 SSIS:384秒
更新数据: 这将提取3,000行,但不需要或进行任何更新到目标表。然后它再次提取11,000行,但是也不需要或进行任何更新到目标表。
调试: Delphi应用:42秒 SSIS:1小时10分钟
无调试: Delphi应用:34秒 SSIS:205秒
奇怪的是,我觉得大部分时间都用于在Visual Studio中更新UI元素。如果我观察进度选项卡,每个迭代会添加一个节点到树中(总共数千个),随着过程的进行,这变得越来越慢。试图停止调试通常不起作用,因为Visual Studio似乎陷入了更新UI的循环中。如果我检查SQL Server的分析器,实际上没有进行任何工作。我不确定机器是否重要,但应该完全可以胜任(四核,4GB RAM,512MB显卡)。
这种行为正常吗?正如我所说,我是一名程序员,所以编写此类事情的应用程序对我来说没有问题(实际上,编写应用程序比在SSIS中“绘制”它要快得多,但我想随着在SSIS中完成更多的工作,这种差距将缩小),但我正在尝试弄清楚像SSIS和DTS这样的东西在我的工具箱中适合哪些任务。到目前为止,它的所有内容都没有给我留下深刻的印象。也许我在某种方式上误用或滥用了SSIS?
非常感谢您的帮助!
在我的包中,我使用一个SQL任务返回约15,000行。我将其连接到ForEach容器中,在其中将结果集列值分配给变量,然后将这些变量映射到传递给另一个SQL任务的参数。
我遇到的问题是调试,不仅仅是更复杂的断点和运行时评估等调试。我的意思只是,如果我带着调试运行它,而不是没有调试,它需要几个小时才能完成。 最终我用Delphi重写了这个过程,以下是我想出的内容:
完全推送数据: 这将提取15,000行,更新每一行的目标表,然后提取11,000行并更新每一行的目标表。
调试: Delphi应用:139秒 SSIS:4小时46分钟
无调试: Delphi应用:132秒 SSIS:384秒
更新数据: 这将提取3,000行,但不需要或进行任何更新到目标表。然后它再次提取11,000行,但是也不需要或进行任何更新到目标表。
调试: Delphi应用:42秒 SSIS:1小时10分钟
无调试: Delphi应用:34秒 SSIS:205秒
奇怪的是,我觉得大部分时间都用于在Visual Studio中更新UI元素。如果我观察进度选项卡,每个迭代会添加一个节点到树中(总共数千个),随着过程的进行,这变得越来越慢。试图停止调试通常不起作用,因为Visual Studio似乎陷入了更新UI的循环中。如果我检查SQL Server的分析器,实际上没有进行任何工作。我不确定机器是否重要,但应该完全可以胜任(四核,4GB RAM,512MB显卡)。
这种行为正常吗?正如我所说,我是一名程序员,所以编写此类事情的应用程序对我来说没有问题(实际上,编写应用程序比在SSIS中“绘制”它要快得多,但我想随着在SSIS中完成更多的工作,这种差距将缩小),但我正在尝试弄清楚像SSIS和DTS这样的东西在我的工具箱中适合哪些任务。到目前为止,它的所有内容都没有给我留下深刻的印象。也许我在某种方式上误用或滥用了SSIS?
非常感谢您的帮助!