Задача 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.
Ответы
Ответ 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
При определении сопоставлений параметров любые конечные пробелы после имени параметра также могут вызвать это сообщение.