SSIS выполняет команды sql, хранящиеся в столбце таблицы - PullRequest
0 голосов
/ 08 ноября 2019

Ошибка: произошла ошибка при извлечении результата в переменную типа (DBTYPE_WSTR). Возможные причины сбоя: проблемы с запросом, неправильно задано свойство ResultSet, неправильно заданы параметры или неправильно установлено соединение.

Используя SSIS, я поместил в столбец sql команды, которые будут преобразовыватьPDF к блобу они были проверены и работают индивидуально. Поэтому я хотел бы запросить столбец таблицы, передать его в задачу exec sql и выполнить каждую команду. Я пробовал много разных вещей, в настоящее время у меня есть набор результатов выполнения задачи sql, установленный на «полный набор результатов» в ResultSet, имя установлено на 0, а переменная User :: sqlcmds это входит в контейнер цикла foreach с настройкой вкладки коллекцииПеременная источника объекта ADO = User :: sqlcmds и режим перечисления в виде строк в первой таблице. На вкладке «Сопоставление переменных» переменная = User :: sqlcmdenu и Index установлены в 0. В контейнере foreach у меня есть задача sql execute, а для sqlstatement установлено значение:

declare @sql nvarchar(max)
set @sql= CONVERT(NVARCHAR(4000),'  ' + ?)
exec sp_executesql @sql

Отображение параметров: Имя переменной = user ::sqlcmds, Direction: Input, Datatype: NVARCHAR, имя параметра inputqlcmd.

что я делаю не так?

Попробовал с помощью потока данных, теперь пытаюсь выполнить sql и foreach. ни один из них не работает.

Ошибка: произошла ошибка при извлечении результата в переменную типа (DBTYPE_WSTR). Возможные причины сбоя: проблемы с запросом, свойство ResultSet установлено неправильно, параметры установлены неправильно или соединение установлено неправильно.

1 Ответ

0 голосов
/ 08 ноября 2019

Вернемся к работе, вернувшись к задаче потока данных: oledb source has-> select convert (varchar (4000), cmd) cmd из attcmd

, а затем использовал производный столбец для преобразования -> (DT_WSTR, 4000) cmd (это решает проблемы, не связанные с Unicode и Unicode).

это ввод в команду oledb с вкладкой свойств компонента, установленной на -> объявление @sql nvarchar (max) set @ sql = CONVERT (NVARCHAR (4000),?) exec sp_executesql @sql С РЕЗУЛЬТАТАМИ НАСТРОЙКИ НЕТ

Обязательно установите для сопоставления столбца входного столбца значение Param_0!

Тип данных входного столбца - DT_WSTR, а тип данных Param_0 - строка Unicode. [DT_WSTR].

...