SSIS执行SQL任务-多个源按顺序而非并行



我有一个巨大的SSIS包,其中包含一个执行SQL任务,该任务从14个不同的源读取数据,通过Union All运行它们,然后通过所有相同的转换。问题是,同时运行14个巨大的SELECT会阻塞服务器。我更希望它们按顺序运行。但由于它们都必须经历同一组转换,我真的不想把它们分成单独的任务。

是否有任何方法可以将包配置为一次一个(甚至一次两个(执行OLE DB源,而不是一次全部执行?

理想情况下,您只需更改ETL管道,将所需的数据导入到暂存环境中,然后使用SQL而不是SSIS活动对该数据进行转换,因为这样会更高效,并提供更大的灵活性。

也就是说,一个可能可行的选项(这有点像bodge(是用另一个Success路径菊花链连接执行SQL任务,这样每个任务都会流到Union All和(除了链中的最后一个(下一个执行SQL任务中,有点像这样:

Execute SQL Task 1 -------+
|                 |
v                 |
Execute SQL Task 2 -----+ |
|               | |
v               | |
Execute SQL Task 3 ---+ | |
|             | | |
v             | | |
Execute SQL Task 4 -+ | | |
| | | |
v v v v
Union All ---> Rest of package

如果您(可以理解(对SSIS开发的重复性感到有点沮丧,我建议您研究Biml以自动创建实际的包。链接版本"BimlExpress"是一个免费的Visual Studio插件,一旦你熟悉它,它将大大节省时间

如果将转换定义为SQL语句,则可以基于这些内容提供提取元数据、转换存储过程和目标架构,以便一次性生成SSIS项目。至少您可以将提取任务的创建自动化到暂存环境中。

最新更新