Tom
Tom

Reputation: 8701

SSIS error : [Execute SQL Task] Error: Executing the query

I am creating a SSIS package and trying to extract data by calling stored procedures from one database and inserting the result set values into another table of different database. I have created a Execute SQL task to extract the data, a for each loop container to loop through the result set and Execute SQL task within the for loop container to insert the result set data into another database table. I am getting an the following error while inserting the records. I guess its the issue with the mapping.

[Execute SQL Task] Error: Executing the query "insert into EmployeeCount (companyId..." failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Following the screenshot of the template design

enter image description here

Following is the edit window of execute sql task which in inside the foreach container

enter image description here

The insert statement

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

Upvotes: 3

Views: 16341

Answers (4)

Hadi
Hadi

Reputation: 37368

Simple Workaround

You can achieve this without using parameters, you can use expressions:

  1. Double click on the Execute SQL Task, Go To Expressions.

  2. add the following expression to 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] + ")"
    

Be aware! This approach makes your solution vulnerable to SQL injections

Upvotes: 0

Yauheni Leaniuk
Yauheni Leaniuk

Reputation: 454

As an option:

You may be trying to insert too long values into shorter columns

For example if you create Source DB you need to be sure that each column have sufficient maximum length and you don't put largest values (too long values) into this column.

So unfortunately SSIS don't specify the problematic column, and you need to find it by yourself or enlarge maximum length of every column.

Upvotes: 0

Sam
Sam

Reputation: 410

You will have to set "Parameter Name" in chronological order.

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

Sample : enter image description here

Upvotes: 3

VKarthik
VKarthik

Reputation: 1429

In the 'Parameter Mapping' for Parameter Name, instead of '?' give the values in a 0 based index i.e. 0,1,2,... till the end.

Upvotes: 0

Related Questions