Подтвердить что ты не робот

Задача SSIS SQL - "Имя параметра нераспознано"

У меня есть SQL-задача, которая должна запускать простое обновление для обновления одной строки.

Я установил SQLStatement для:

update agency set AgencyLastBatchSeqNo = ? where agencyID = ?

На странице "Сопоставление параметров" я дал параметры Parameter 0 и Parameter 1 переменным, которые, как я знаю, содержат правильные значения. Я также правильно задал значения имени параметра.

В базе данных столбец AgencyLastBatchSeqNo является int, AgencyID - большой int. Есть ли у кого-нибудь ссылка, чтобы найти, на что типы данных сопоставляются в SSIS? Я догадался о SHORT для int и LONG для большого int.

Когда я запускаю задачу, я получаю следующую ошибку:

[Выполнение SQL-задачи] Ошибка: выполнение запроса "агент агентства обновлений AgencyLastBatchSeqNo =? где AgencyID =?" не удалось выполнить следующие error: "Имя параметра не распознано". Возможные причины отказа: Проблемы с запросом, свойство ResultSet неправильно установлено, параметры не установлены правильно или соединение не установлено правильно.

Может кто-нибудь может предложить, что может быть неправильным?

Спасибо

Rob.

4b9b3361

Ответ 1

Ответ на это - изменить значение имени параметра на экране сопоставления параметров.

Учитывая следующий запрос

SELECT Id, AnimalName FROM dbo.Farm WHERE Farm_id = ?

Предполагая, что мой параметр является целым числом Переменная с именем User:: Farm_id
Выберите следующие значения на экране сопоставления параметров

Variable Name  -   User::Farm_id
Direction      -   Input
Data Type      -   LONG
Parameter Name -   0
Parameter Size -   -1

Первоначально имя параметра будет "NewParameterName". Просто измените это на порядковое положение вашего маркера переменной ( "?" )

Ответ 2

Одна вещь, о которой вы не упоминаете, - это тип вашего соединения. Я предполагаю, что вы не используете ADO.Net, так как маркировка параметров в этом случае не является?. Для других типов соединений параметры называются следующим образом:
ADO (не ADO.Net): имена параметров Param1, Param2...
Соединение ODBC: имена параметров 1,2,3... Соединение OLEDB: имена параметров: 0,1,2...

Для типов переменных (они отличаются в разделе сопоставления параметров, чем в любой другой области SSIS), я обычно использую Long for Int, и я обычно оставляю длину равной -1. Я считаю, что Long будет работать как для Int, так и для Bigint.

Ответ 3

Если вы используете более одного параметра, то в окне задачи выполнения sql перейдите к отображению параметров и установите имя параметра в 0,1,2,3.... в зависимости от количества параметров и размера параметра -1.. Это должно быть полезно для решения вашей проблемы.

Ответ 4

См. Типы данных SSIS.

   int = DT_I4  (4 byte integer) = Int32 variable
bigint = DT_I8  (8 byte integer)  = Int64 variable

Ответ 5

Убедитесь, что вы указываете свои значения и что у вас нет опечаток в именах столбцов.

Ответ 6

При определении сопоставлений параметров любые конечные пробелы после имени параметра также могут вызвать это сообщение.