Как передать переменную в команду ODBC SQL в SSDT 2017?

Я не смог найти возможность передать параметр источнику ODBC? Я мог видеть много статей, связанных с этим, но я не мог найти ту же опцию в выражении задачи потока данных. [ODBC Source].[SqlCommand] не входит в задачу потока данных.

Выражение свойства

Статья, на которую я ссылался ниже:

Может ли кто-нибудь помочь в этом?


person Tanmoy Santra    schedule 04.02.2019    source источник
comment
Из интереса, почему вы используете соединение ODBC, а не OLEDB? Если мне не изменяет память, я уверен, что BIDS/SQL Server 2008 поддерживает OLEDB.   -  person Larnu    schedule 04.02.2019
comment
Что вы используете в SSIS, когда пытаетесь передать переменную? Или что-то другое. Если задача «Выполнение SQL»? Если это так, вы можете создать свою инструкцию SQL в переменной в SSIS, используя выражения, а в своей задаче SQL используйте переменную вместо входного текста.   -  person Brad    schedule 04.02.2019
comment
Я хочу подключить IBM Netezza и выполнить запрос, передав ему параметр даты. Задача SQL не будет работать здесь   -  person Tanmoy Santra    schedule 04.02.2019
comment
С какими версиями SQL Server, Visual Studio и SSDT вы работаете?   -  person Hadi    schedule 04.02.2019


Ответы (1)


Я думаю, что это свойство отсутствует из-за несоответствия между версиями Visual Studio, SSDT и SQL Server. Во-первых, вы должны убедиться, что вы используете актуальные и подходящие версии, вы можете проверить следующие ссылки для получения дополнительной информации:

Также попробуйте проверить пакет Target Server Version:

Ссылки на похожие проблемы


Обновление 1

При поиске по этой проблеме я обнаружил, что свойство [ODBC Source].[SqlCommand] может отсутствовать в версиях до 2012 года (2005, 2008), но я нашел ссылку, в которой упоминалось обходное решение:

Вы можете легко указать параметры, если источник является источником OLE DB, но что, если это источник ODBC? Вы должны использовать источник DataReader, и вы не можете легко установить параметры — например, оператор WHERE. Вы ДОЛЖНЫ использовать выражения, чтобы получить запрос с динамическим оператором WHERE или передать переменную в качестве фильтра оператора WHERE.

Итак, добавьте DataFlow в свой пакет, а внутри него добавьте источник DataReader, а затем установите соединение с вашим соединением ODBC (соединение ADO.NET) и установите текст команды.

person Hadi    schedule 04.02.2019
comment
Проверим на предмет несоответствия. Версия VS 2017 (SSDT) ​​Версия 15.9.4 .SSIS Целевая версия 2016 и SQL Server: Microsoft SQL Server 2016 (SP2-CU2) (KB4340355) — 13.0.5153.0 (X64) - person Tanmoy Santra; 05.02.2019