如何通过SSIS在1个存储过程中输出多个文件

时间:2015-07-24 13:04:32

标签: sql-server ssis

我在SQL Server 2008和BIDS工作。由于一些性能问题,我正在重新设计我当前的架构。目前,我有一个存储过程,其中包含许多INSERT INTO SELECT语句。在我的新架构中,我试图获得SSIS的插入性能(而不是SSMS中的INSERT INTO)。所以,我的新存储过程仍将包含所有SELECT语句(在每个语句之前没有INSERT INTO)。我将在SSIS中调用此存储过程(提供SELECTs所需的一些参数)。我的目标是让每个SELECT写入单独的平面文件。 (实际上,SELECTS的某些组将写入单独的平面文件,这样我只有几个 - 而不是十亿 - 平面文件连接管理器。)我知道如何在SISS中执行存储过程并让它写一个多行设置为平面文件。但是,是否可以在SSIS中执行1个存储过程来将多个多行集写入多个平面文件?如果是这样,怎么办呢?

2 个答案:

答案 0 :(得分:1)

您可以根据需要将一个存储过程写入任意数量的文件。请查看Phil Factor,https://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

撰写的这篇文章

然而,您正在失去SSIS的所有功能 - 例如错误行上的重定向,日志记录,并行处理。您需要做的事情听起来像一个完美的SSIS任务(或一系列任务)。

答案 1 :(得分:0)

由于SSIS的严格元数据架构,无法使用数据流进行动态导出。但是你可以使用Control Flow任务来完成它。您必须在执行流程任务中编写BCP command并为要导出的每个表调用它。

<强>步骤:

  1. 调用sys.dm_exec_connections并将结果集合并到变量
  2. 使用foreach循环任务循环遍历表
  3. 使用执行流程任务在循环中调用BCP。