SSIS错误:[执行SQL任务]错误:执行查询

时间:2017-07-12 22:53:03

标签: sql-server ssis etl

我正在创建一个SSIS包并尝试通过从一个数据库调用存储过程并将结果集值插入到另一个不同数据库的表中来提取数据。我创建了一个执行SQL任务来提取数据,a为每个循环容器循环遍历结果集,并在for循环容器中执行SQL任务,以将结果集数据插入到另一个数据库表中。插入记录时出现以下错误。我猜它是映射的问题。

  

[执行SQL任务]错误:执行查询“插入EmployeeCount(companyId ...”失败,出现以下错误:“参数名称无法识别。”。可能的失败原因:查询问题,“ResultSet”属性未正确设置,参数设置不正确或连接未正确建立。

按照模板设计的屏幕截图

enter image description here

以下是在foreach容器内部执行sql任务的编辑窗口

enter image description here

插入声明

insert into EmployeeCount (companyId,dataItemName,dataItemvalue,fiscalYear,fiscalQuarter,PeriodTypeId) values(companyId,dataItemName,dataItemvalue,fiscalYear,fiscalQuarter,PeriodTypeId)

3 个答案:

答案 0 :(得分:2)

您必须设置"参数名称"按年代顺序。

 i.e companyID parameter must be 0, dataItemvalue to 1 ....PeriodTypeId to 5 

示例: enter image description here

答案 1 :(得分:0)

在参数名称的“参数映射”中,而不是“?”给出基于0的索引中的值,即0,1,2,......直到结束。

答案 2 :(得分:0)

简单解决方法

您可以在不使用参数的情况下实现此目的,您可以使用表达式:

  1. 双击Execute SQL Task,转到表达式。
  2. 将以下表达式添加到SqlStatementSource

    "insert into EmployeeCount (companyId,dataItemName,dataItemvalue,fiscalYear,fiscalQuarter,PeriodTypeId) 
    values(" + (DT_WSTR,50)@[User::companyId] + ",'" + @[User::dataItemName] + "'," + (DT_WSTR,50)@[User::dataItemvalue] + "," + (DT_WSTR,50)@[User::fiscalYear] + "," + (DT_WSTR,50)@[User::fiscalQuarter] + "," + (DT_WSTR,50)@[User::PeriodTypeId] + ")"