SSIS包平面文件目标

时间:2019-09-11 22:14:33

标签: c# sql-server ssis script-component flatfiledestination

概述:我正在运行SSIS包,以将数据从SQL Server 2016复制到平面文件管道,该管道用引号引起来的标识符分隔并处理转义序列。我必须使用数据流任务中的脚本组件作为将数据写入平面文件的源,因为我必须从具有不同模式的100多个表中复制数据,因此这是唯一适用于我的动态方法。而且,数据量巨大,大多数表具有100多个列和500万个以上的记录。我已经设置好我的主程序包针对不同的表(通过SQL表和参数进行管理)并行调用相同的程序包12次。最重要的是,我的子包正在使用For Loop容器和参数批量创建文件。

问题陈述:当我从SSDT运行我的程序包时,一旦处理了记录,它就会立即将数据写入文件,但是当我通过SQL Server代理作业运行同一程序包时,它花费的时间要长得多,并且写入处理完所有记录后,将数据保存到文件。

示例:让表“ a”具有4百万条记录,并且我正在生成4个文件,每个文件有1百万个。在相同参数下,SSDT会尽快在文件〜50K-60k(可能取决于缓冲区大小)中写入行当我从SQL Server代理作业运行时,它们处理的是相同的包,但配置相同,但它同时处理所有100万条记录并尝试一次写入所有记录。

问题:由于一次要写入一百万条记录,因此仅创建一百万条记录就需要花费大量的文件创建时间-根据表中的列数,大约需要5-10分钟,但从SSDT来看要快得多-同一张桌子2-5分钟。

有人可以建议我必须检查哪些设置才能使其更快地工作。从中选择数据的表已正确索引。在SSMS中针对数据库运行时,对100万条记录的相同查询大约需要2-4分钟。

0 个答案:

没有答案
相关问题