开箱即用的更新组件 OLE DB 命令组件执行逐行 (RBAR) 更新。这通常不会提供良好的性能。更好的更新模式是将更改暂存到“正常”目标(OLE DB 目标或 ADO .NET 目标)。数据流任务完成后,使用执行 SQL 任务对这些行执行基于集合的更新。阅读Stairway to Integration Services系列,尤其是第 4 级以了解此模式。
除了我上面提到的更新问题之外,SSIS 更新与 SSMS 更新之间的区别在于 SSMS 只是要运行一个脚本并退出。SSIS 不只是“去”。它有一个相当复杂的处理模型,因此它需要验证包处于正确的状态、资源是否可用等。如果您正在记录事件(并且应该记录),请为您的任务捕获 OnPreExecute 和 OnPostExecute。这将显示 SSIS 在包中的特定步骤上花费了多长时间。请注意,出于计时目的,从 Visual Studio (BIDS/SSDT) 中运行包将比命令行版本慢,因为它必须启动并管理调试资源(并显示漂亮的框更改颜色/接收复选标记)。
还想知道发生了什么吗?打开 SQL Profiler,您可以从 SSIS 包中捕获所有 SQL Server 活动。如果您长时间捕获生产服务器上的所有内容,请注意这可能产生的影响。如果您使用自己喜欢的搜索引擎,有大量可用资源解释如何运行分析器。