SSIS - 从没有 headers 的存储过程中提取数据

SSIS - Extract data from a stored proc with no headers

我正在处理一个要求,我需要执行一个存储过程(还有 399 个其他过程),它不一定有 header。存储过程执行后,它会根据 table 提取不同数量的行。问题是,SSIS OLEDB 源不接受存储过程调用,该调用没有关于它试图提取的数据的 header 信息。有没有办法在不包含 header 信息的情况下将数据拉入平面文件?

谢谢你的时间。

房车

当我等待回音时,这是我的复制品。我定义了一个简单的过程 returns 一行没有定义列名的数据

CREATE PROCEDURE dbo.SO_67221181
AS
BEGIN
    SELECT 0, 'A', DATEFROMPARTS(2021,4,22);
END
GO

执行程序确认,SSMS 中有 3 列(无列名)和

-- No column names
EXECUTE dbo.SO_67221181;

当我尝试在 OLEDB 源中使用它时,SSIS 失败并显示“有一个没有名称的数据源列。每个数据源列都必须有一个名称。”四处点击,我无法通过标准编辑器在其中强制输入假的列名。

WITH RESULT SETS 救援! 从SQLServer 2012开始,我们可以在调用过程中使用WITH RESULTS SET子句EXECUTE来处理这种情况。

我明确定义了数据的形状,现在 SSIS OLEDB 源很满意。

-- Define the shape
EXECUTE dbo.SO_67221181
WITH RESULT SETS
(
    (
        Col1 int NOT NULL
    ,   ColA char(1) NOT NULL
    ,   YeDate date NOT NULL
    )
);