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
)
);
我正在处理一个要求,我需要执行一个存储过程(还有 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
)
);