我有SP包含临时表并在输出中生成4列 如 id,name,original和changed 输出需要保存在平面文件中。
任何人都可以建议如何使用执行SQL任务。
我尝试使用oledb将数据访问模式作为SQL命令。但是收到错误 0x80040E14。
任何人都可以提出建议。 感谢
答案 0 :(得分:0)
借用here的答案,您可以使用WITH RESULT SETS预先告知SSIS引擎存储过程将返回哪些数据。
使用此程序:
CREATE PROCEDURE dbo.UseTempTable AS BEGIN SET NOCOUNT ON; CREATE TABLE #MyTable(WhoCares INT NOT NULL IDENTITY(1,1) PRIMARY KEY, Whatever VARCHAR(99)); INSERT INTO #MyTable(Whatever) VALUES('Minger'); INSERT INTO #MyTable(Whatever) VALUES('Bonjour'); SELECT ColInt = WhoCares , ColVarChar = Whatever FROM #MyTable END;
如果我尝试将其用作数据源,我会在SSIS 2012中收到错误 在数据流中。
在2012年之前,有各种各样的技巧可以表明"假装"记录 例如SET FMTONLY ON ... SET FMTONLY OFF但它们在2012年不起作用。
从Phil's article开始,我们只需要指定数据流数据源 如
EXEC('EXEC dbo.UseTempTable') WITH RESULT SETS ( ( ColInt INT NOT NULL, ColVarChar VARCHAR(99)) )
更多信息:link