2013-12-10 2 views
4

Я работаю в SSIS и хочу выбрать значение из функции в базе данных PostgreSQL. (Этот пакет SSIS извлекает данные из базы данных PostgreSQL для обработки в хранилище данных. Функция здесь просто устанавливает флаг состояния в таблице в базе данных PostgreSQL.)Значение не входит в ожидаемый диапазон в ssis ... а?

Функция возвращает один символ ('Y' или 'N'). Я выполняю его с помощью SQL Task, выдавая инструкцию «select edw_processing_start_process from;».

Заявление работает в том смысле, что флаг успешно включен в базу данных PostgreSQL. Но задача SQL возвращает ошибку в заголовке этого вопроса. (Я искал эту ошибку, нашел множество ссылок, но никто из них, похоже, не относится к этой точной ситуации ... Я думаю, что это появляется во многих инструментах Microsoft.)

ResultSet задачи SQL set в Single row, переменная, заданная для строкового типа данных. Помимо этого, я действительно не знаю, что происходит.

Спасибо, --sw

+0

Сначала попробуйте взять возвращаемое значение как объект (например, набор записей ADO), а не строку и посмотреть, выполняется ли она ОК. Возможно, определение метаданных PostgreSQL строки не соответствует определению SSIS строки. Возможно, даже вернитесь на шаг и вообще не поймите результат, просто чтобы убедиться, что это проблема. –

+0

Я делаю что-то подобное, он работал с PGNP, но с psqlodbc в качестве драйвера он терпит неудачу. Я отправлю ответ ниже, если я это выясню. – influent

ответ

4

Не уверен, что если вы используете один и тот же драйвер (psqlodbc), но по каким-то чудом я понял, что если я использую «1» в качестве результата имя вместо имени возвращаемым столб, он работает как шарм.

+0

Лучший ответ от всех! – mhn

0

Просто столкнулся с этой проблемой, изменив выходной внешний тип столбца с DT_WSTR на DT_STR, похоже, решил его для меня. Не уверен, почему он работал годами с DT_WSTR, и теперь это не так, но все равно.

Смежные вопросы