【问题标题】:SSIS result set fed in parallel to stored procedure与存储过程并行馈送的 SSIS 结果集
【发布时间】:2010-12-01 18:55:32
【问题描述】:

我目前有 2 个存储过程...

Stored Proc #1 根据一系列标准返回产品列表

Stored Proc #2 接受单个 productID 并执行一些复杂的查询逻辑并将结果写入表中

我的问题是,有超过 30,000 种产品,一次从存储过程 #1 处理结果集太慢,我无法轻松地将整个批处理调用集成到存储过程 #2

我的问题如下: 使用 SSIS 有没有办法设置一个任务,该任务将从存储过程 #1 获取结果集并与每一行并行调用存储过程 #2。

EXAMPLE of Stored Proc 1 result set
-----------------------------------
Product ID
----------
ABC123
XYZ987
AAABBB
CCCDDD
EEEFFF

I need to setup SSIS to call the following in parallel:
-------------------------------------------------------
EXEC StoredProc2 'ABC123'
EXEC StoredProc2 'XYZ987'
EXEC StoredProc2 'AAABBB'
EXEC StoredProc2 'CCCDDD'
EXEC StoredProc2 'EEEFFF'

【问题讨论】:

    标签: sql-server stored-procedures ssis parallel-processing


    【解决方案1】:

    哎呀,这是 SP #2 的许多处决。不过你可以做到。

    创建数据流任务。将 OLE DB 源组件添加到数据流。编辑组件并将其配置为执行 SP #1。您可以在编辑器中查看列,以了解组件将输出什么。

    添加一个 OLE DB 命令数据流转换组件。创建从第一个组件到 OLE DB 命令组件的链接。编辑组件并在 Component Properties 选项卡上的 SqlCommand 属性中输入将运行 SP #2 的 SQL 语句。为 SP 的每个参数添加问号 (?)。

    选择列映射选项卡。将输入列与每个参数相关联。

    【讨论】:

    • 感谢您的回复!快速澄清....它必须是 OLE DB 组件吗?还是可以是 ADO.NET 组件?
    • @Scott Vercuski,您可以使用 ADO.NET 源和目标。但是,没有可以运行 SP #2 的 OLE DB 命令的 ADO.NET 版本。
    • 明白了!没关系...我将对 SP #2 进行调整以在 OLE DB 上下文中运行。非常感谢!
    • 有没有办法增加这个数据流的并行度?好像是一次执行这个?如果可能的话,我希望它使用 SP#1 中的行一次执行尽可能多的 SP#2?
    • @Scott vercuski,查看条件拆分组件。您可以通过一条路径发送一组数据,并通过第二条路径发送另一组数据。条件取决于您,可能所有偶数编号的 ID 值都走一条路,而奇数编号的 ID 值走另一条路。将条件拆分放在源之后。创建第二个 OLE DB 命令组件并像第一个一样配置。将一个连接到第一条路径,另一个连接到第二条路径。您可以为更多路径执行此操作。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2019-11-08
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多