SSIS:ADO.NET Informix源不能与临时表一起使用

时间:2014-07-07 09:19:41

标签: ssis informix

我试图创建SSIS包以执行相对简单的ETL。

我的连接管理器是DB2 .Net提供程序(.Net Providers / IBM DB2 .NET Data Priovider)。

我的数据源是ADO NET Source。它在SQL命令模式下工作。

以下命令有效:

select first 10 *
from part

但这不起作用:

select first 10 *
from part
into temp temp2;

select * 
from temp2;

drop temp table temp2;

实际上它表现得很奇怪。 首次执行后(按下按钮'预览...')我通常会收到此错误:

Pipeline component has returned HRESULT error code 0xC02020FE from a method call. (Microsoft.SqlServer.DTSPipelineWrap)

第二次执行后(按下按钮'预览...'再次)我得到数据集!

然而,在第三次执行(和连续执行)之后,错误告诉......

ERROR [IX000] [IBM][IDS/UNIX64] Temp table (temp3) already exists in session. (IBM.Data.DB2)

谷歌搜索引导我无处可寻:(

这背后有什么逻辑,以及如何解决它?

更新

将查询封装在STORED PROCEDURE中并使用EXECUTE PROCEDURE调用它...

CREATE PROCEDURE MY_DATA()
RETURNING CHAR(256), CHAR(256);

DEFINE l_fld1 CHAR(256);
DEFINE l_fld2 CHAR(256);

SELECT first 10 fld1, fld2
FROM part
INTO TEMP temp2;

FOREACH
SELECT fld1, fld2
INTO l_fld1, l_fld2
FROM temp2

RETURN l_fld1, l_fld2
WITH RESUME;

END FOREACH

DROP TEMP TABLE temp2;

END PROCEDURE

......我有一些新问题:

  • 点击"预览..."首先我得到结果,然后第二次点击我得到ERROR [IX000] [IBM][IDS/UNIX64] Temp table (otkalcec.temp2) already exists in session.
  • 如果我稍等一下,点击"预览..."再次,它再次起作用;显然,会话在此期间被丢弃(一些空闲超时?)
  • 然而,查询总是返回空字段名,这可能是我选择"列"时没有映射任何列的原因。在左边:(

更新2:

存在与SSIS消耗Informix驱动程序参数相关的问题,我并不知道它存在:"连接生命周期"。这解决了前两个问题。

现在预览结果集正常。我唯一的问题是缺少列中的列信息。除了这一切之外,一切似乎都在起作用,而且我无法在不破坏列信息的情况下继续进行! >:(

0 个答案:

没有答案