У меня есть Задача SQL, которая должна выполнить простое обновление для обновления одной строки.
Я установил SQLStatement на:
update agency set AgencyLastBatchSeqNo = ? where agencyID = ?
На странице Parameter Mapping я дал установленный Параметр 0 и Параметр 1 к переменным, которые я знаю, содержат правильные значения. Я также установил значения Названия параметра правильно.
В базе данных столбец AgencyLastBatchSeqNo является интервалом, AgencyID является большим интервалом. У кого-либо есть ссылка для нахождения то, на что отображаются типы данных в SSIS? Я предположил КОРОТКИЙ для интервала и Жажду большого интервала.
Когда я выполняю задачу, я получаю следующую ошибку:
[Выполните Задачу SQL] Ошибка: Выполнение запроса "агентство по обновлению установило AgencyLastBatchSeqNo =? где AgencyID =?" перестал работать со следующей ошибкой: "Название параметра является нераспознанным".. Возможные причины отказа: проблемы с запросом, свойство "ResultSet" не набор правильно, параметры не набор правильно или соединение, не установленное правильно.
Кто-либо мог предложить то, что может быть неправильным?
Спасибо
Ограбить.
Ответ на этот вопрос заключается в изменении значения имени параметра на экране сопоставления параметров.
Учитывая следующий запрос
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". Просто измените это на порядковую позицию вашего маркера переменной ("?")
]Смотрите [][]Типы данных SSIS[][].[
] [ int = DT_I4 (4 byte integer) = Int32 variable
bigint = DT_I8 (8 byte integer) = Int64 variable
] Одна вещь, которую вы не упоминаете, это ваш тип соединения. Я предполагаю, что вы не используете ADO.Net, так как маркировка параметров в этом случае не является ?.. Для других типов подключения параметры называются следующим образом:
.
ADO (не ADO.Net) соединение: имена параметров: Param1, Param2...
Подключение ODBC: имена параметров 1,2,3...
Подключение OLEDB: имена параметров 0,1,2...
Для типов переменных (они отличаются в секции отображения параметров, чем в любой другой области SSIS) я обычно использую Long для Int и обычно оставляю длину, установленную на -1. Я считаю, что Long будет работать как для Int, так и для Bigint.
Убедитесь, что вы цитируете свои значения, и что у вас нет опечаток в названиях столбцов.