SSIS Задача SQL - “Название параметра является нераспознанным”

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

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

update agency set AgencyLastBatchSeqNo = ? where agencyID = ?

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

В базе данных столбец AgencyLastBatchSeqNo является интервалом, AgencyID является большим интервалом. У кого-либо есть ссылка для нахождения то, на что отображаются типы данных в SSIS? Я предположил КОРОТКИЙ для интервала и Жажду большого интервала.

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

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

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

Спасибо

Ограбить.

32
задан slipsec 5 May 2012 в 03:14
поделиться

4 ответа

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

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

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". Просто измените это на порядковую позицию вашего маркера переменной ("?")

88
ответ дан 27 November 2019 в 19:58
поделиться
[

]Смотрите [][]Типы данных SSIS[][].[

] [
   int = DT_I4  (4 byte integer) = Int32 variable
bigint = DT_I8  (8 byte integer)  = Int64 variable
]
1
ответ дан 27 November 2019 в 19:58
поделиться

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

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

3
ответ дан 27 November 2019 в 19:58
поделиться

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

0
ответ дан 27 November 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: