如何提高ssis中的更新速度

如何提高ssis中的更新速度,ssis,dataflowtask,Ssis,Dataflowtask,我有SQL Server中的SQL命令任务,每秒只更新20行,但我需要更新200000多行,这需要时间。当我使用SCD(类型2)时,它既不插入也不更新任何记录。(甚至没有给出任何错误) 某些批行正在被传输,SQL命令任务将变为黄色。。虽然它正在更新列,但速度非常慢(每秒20行) 如何提高更新速度?不要使用SQL任务。它执行单例操作,因此您可以期望针对目标数据库发出200000条update语句。如果您创建了一个存储过程来避免查询编译过程中的几个步骤,您可能会得到一些微小的提升,但您必须进行测试和

我有SQL Server中的SQL命令任务,每秒只更新20行,但我需要更新200000多行,这需要时间。当我使用SCD(类型2)时,它既不插入也不更新任何记录。(甚至没有给出任何错误)

某些批行正在被传输,SQL命令任务将变为黄色。。虽然它正在更新列,但速度非常慢(每秒20行)


如何提高更新速度?

不要使用SQL任务。它执行单例操作,因此您可以期望针对目标数据库发出200000条update语句。如果您创建了一个存储过程来避免查询编译过程中的几个步骤,您可能会得到一些微小的提升,但您必须进行测试和查看

获得性能提升的真正方法是创建一个临时表,并将所有要更新的行转储到该表中。数据流完成后,连接执行SQL任务以执行从暂存表到目标表的批更新


请让我知道图片是否能让这一点更清楚

不要使用SQL任务。它执行单例操作,因此您可以期望针对目标数据库发出200000条update语句。如果您创建了一个存储过程来避免查询编译过程中的几个步骤,您可能会得到一些微小的提升,但您必须进行测试和查看

获得性能提升的真正方法是创建一个临时表,并将所有要更新的行转储到该表中。数据流完成后,连接执行SQL任务以执行从暂存表到目标表的批更新


让我知道,如果使用SQL 2008或更高版本,图片是否会使这一点更加清晰

请尝试以基于集合的方式工作的合并语句(在执行SQL任务中),而不是SQL命令的RBAR(逐行)

如果使用SQL 2008或更高版本,请尝试合并语句(在执行SQL任务中)它以基于集合的方式工作,而不是SQL命令的RBAR(逐行)

这是一个非常好的建议+1美元。但我的数据库中有太多的表,因此我无法创建补充/中间更新表。我是否可以将输出存储在记录集中,并将记录集用作源?这是一个非常好的建议+1美元。但我的数据库中有太多的表,因此我无法创建补充/中间更新表。我是否可以将输出存储在记录集中,并将记录集用作源?