【问题标题】:SSIS Temp Table error [duplicate]SSIS 临时表错误 [重复]
【发布时间】:2015-08-14 06:53:40
【问题描述】:

我有 SP 包含临时表并在输出中生成 4 列 作为 id,name,original and changed 输出需要保存在平面文件中。

任何人都可以建议如何使用执行 SQL 任务来完成。

我尝试使用数据访问模式作为 SQL 命令的 oledb。但出现错误 0x80040E14.

任何人都可以提出一些建议。 谢谢

【问题讨论】:

  • 为什么需要在执行 SQL 任务中进行?你可以使用类似xp_cmdshell 'BCP.EXE.......
  • 因为它是 SSIS 包的一部分
  • 您应该能够放下数据流并将源设置为您的 SP。你试过了吗?

标签: ssis


【解决方案1】:

借用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 用作数据源,则会在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2018-02-14
    • 1970-01-01
    • 2012-03-28
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多