Переместить данные из Oracle в Sybase - проблема с строкой - PullRequest
0 голосов
/ 12 февраля 2019

В нашем пакете DTS мы копируем данные из Oracle из столбца VARCHAR2(50 CHAR) (Unicode) в столбец Sybase VARCHAR(50) (Nonunicode).Источник - БД Oracle, где мы выбираем данные из SQL-запроса.

Следующим является преобразование данных, при котором мы преобразуем данные в STRING[DT_STR] 50 (СТРАНИЦА КОДА 1250).Наконец, данные вставляются в столбец таблицы Sybase Varchar(50).Но после запуска мы видим только пустые столбцы, без исходных значений.

Где может быть ошибка?


Обновление 1

Если я выполню SELECT @@VERSION на сервере Sybase, я получу следующую информацию:

Adaptive Server Enterprise / 15.7 / EBF 21520 SMP SP102 / P / ia64 / HP-UX B.11.31 / ase157sp101 / 3445/64-bit / FBO / сб. 13 июля 05:47:31 2013

И я использую OLEDB-провайдер для подключения к месту назначения Sybase

1 Ответ

0 голосов
/ 11 марта 2019

Используйте ADO.Net вместо OLEDB

Исходя из ваших комментариев, похоже, что вы используете OLEDB Provider для подключения к Sybase.Предпочтительным способом подключения к Sybase является использование поставщиков ADO.Net, а не OLEDB.

Проблемы с поставщиком OLEDB Sybase

С помощью небольшого поиска в Интернете вы можете понять, что поставщик OLEDB Sybase может вызвать несколько проблем.при использовании в SSIS, например:

Sybase ADO.NET

ADO.Net - это правильный способ подключения к sybase из служб SSIS.

ВСледуя официальной документации , они упомянули, что:

Адаптивный сервер ADO.NET Поставщик данных может быть интегрирован в службы интеграции SQL Server (SSIS), обеспечивая естественный доступ к данным ADO.NETФункции провайдера.
Благодаря интеграции вы можете использовать Adaptive Server в качестве:

  • ADO.NET Connection Manager
  • ADO.NET Исходный компонент потока данных
  • ОБЪЯВЛЕНИЕКомпонент потока данных O.NET Destination

Также на официальной странице загрузки они не упомянули поставщика OLEDB, но упомянули ADO.NET

Пошаговое руководство по использованию поставщика данных Sybase ADO.Net

Вы можете проверить следующую ссылку:


Обходной путь

Если ADO.Net не работал, убедитесь, что проблема не вызвана некоторыми символами Unicode, которые не поддерживаются в месте назначения Sybase.

Попробуйте добавить компонент сценария, добавьте столбец Output типа DT_STR и используйте следующий код:

Row.outColumn = Encoding.GetEncoding("Windows-1250").GetString(Encoding.GetEncoding("Windows-1250").GetBytes(Row.inColumn))

И сопоставьте outColumn с назначением.

...