#ssis
#Служба ssis
Вопрос:
У меня есть следующий оператор insert в моей задаче execute sql в SSIS:
INSERT INTO dbo.SSISLogTest
(NodeID, BusinessDate, StartDate, StopDate, StepName, RecordCount, Message, Status, UserID)
VALUES (?,?,?,?,?,?,?,?,?)
Когда я запускаю его в рамках задачи, предоставляющей параметры, он выполняется нормально и вставляет запись в таблицу.
Когда я запускаю пакет, этот шаг завершается неудачей со следующей ошибкой:
«Ошибка [Выполнить задачу SQL]: выполнение запроса «ВСТАВИТЬ В dbo.SSISLogTest …» завершилось неудачей со следующей ошибкой: «Имя параметра не распознано». Возможные причины сбоя: проблемы с запросом, неверно заданное свойство «ResultSet», неверно установленные параметры или неправильно установленное соединение «.
Комментарии:
1. Я бы сказал, что вы неправильно настроили свои параметры в SSIS. Можете ли вы подробно рассказать, как вы это сделали? Передача параметров через переменные в пакеты является сложной задачей в SSIS и может быть подвержена ошибкам, если не выполняется определенными способами.
Ответ №1:
Разные поставщики соединений требуют разного синтаксиса — все следующее должно быть установлено правильно:
- Тип соединения (т.е. OLE DB, ADO …) Ваш выбор, но стремитесь использовать одно и то же во всем вашем приложении.
- Количество и специфика (имя переменной, направление, тип данных, имя параметра, размер параметра) параметров в диалоговом окне «Сопоставление параметров».
- Синтаксис параметра в запросе SQL (т. Е. ваши вопросительные знаки.)
Пожалуйста, посмотрите пример OLEDB на скриншотах ниже и обратитесь к работе с параметрами и кодами возврата в задаче Execute SQL для получения подробной информации.
Комментарии:
1. Оказывается, проблема в моем случае была связана с тем, что я фактически назвал, а не предоставил порядковый номер. Спасибо за скриншоты 🙂
2. «Преимущество стандартов [SQL] в том, что есть из чего выбирать» 🙂