Необходимо убедиться, что ваш оператор SQL имеет правильный тип для параметризации в соответствии с вашим менеджером соединений.
Если вы используете OLE DB - ваш оператор вставки должен иметь вид, подобный INSERT INTO Tbl(col) VALUES (?)
Resultset должен иметь значение «None» (так как нечего возвращать в INSERT), а вкладка «Сопоставление параметров» должна иметь один параметр (или столько же, сколько у вас?), А параметр «Имя параметра» должен (для OLE DB) начните с 0, затем 1, 2 ..., n. Если бы вы использовали соединение ADO, вам нужно было бы назвать параметры Param1, Param2, ... ParamN.
Справочную информацию о передаче переменных соответствующим менеджерам соединений можно посмотреть здесь: http://technet.microsoft.com/en-us/library/cc280502.aspx
Правильный ответ согласно вашему комментарию :
Вы не можете использовать сопоставление параметров в запросе такого рода. Но есть простой способ сделать это.
Создайте новую переменную sqlCommand (тип string). щелкните по нему в списке переменных и нажмите F4, чтобы увидеть свойства. Измените «EvaluateAsExpression» на true и щелкните поле выражения, чтобы открыть окно выражения. Здесь сделайте ваш запрос в таком формате "INSERT INTO tbl(dateCol,intCol,charCol) SELECT CONVERT(DATETIME,'" + (DT_STR,20,1252)@[User::dateVar] + "',104) AS dateCol, intCol, charCol from anotherTbl"
Когда вы нажмете Evaluate Expression, вы увидите, что формируется действительный оператор SQL, который вы можете использовать.
Теперь вернитесь к задаче «Выполнение SQL», удалите сопоставление параметров. Закройте диалоговое окно, щелкните задачу «Выполнение SQL», нажмите F4, найдите строку выражений, нажмите кнопку ... и добавьте выражение в свойство «SqlStatementSource» с выражением @ [User :: sqlCommand] (или любым другим именем, которое вы назвали своей переменной ).
Теперь запустите задачу, и она должна работать без проблем.