Подтвердить что ты не робот

SSIS Преобразование между Unicode и Un-Unicode Error

У меня есть пакет ssis, где я использую источник OLEDB, ссылающийся на таблицу SQL Server 2005. Все столбцы, кроме столбца даты, являются NVARCHAR (255). Я использую назначение Excel и используя инструкцию SQL для создания листа в книге Excel, SQL находится в диспетчере соединений excel (фактически создавая оператор таблицы, который создает лист), и получается из сопоставления столбцов из БД.

Независимо от того, что я сделал, я продолжаю получать эту ошибку unicode → non-unicode преобразования между моим источником и получателем. Пробовал преобразование в строку [DT_STR] между S > D, удалил его, изменил таблицу SQL VARCHAR на NVARCHAR и все еще получил эту ошибку flippin.

Поскольку я создаю лист в Excel с помощью SQL-запроса, я не вижу способа заранее определить, какие типы данных столбцов будут в листе Excel. Я предполагаю, что это будут метаданные по умолчанию, но я не знаю.

Итак, между моей целевой таблицей SQL и созданием моего листа Excel с этим SQLS-выражением SSIS, как я могу остановить эту ошибку?

Моя ошибка:

Ошибка в задаче потока данных [Источник OLE DB [1]]: Столбец "MyColumn" не может преобразовывать типы строк в unicode и не-Unicode.

И для всех столбцов nvarchar.

Оцените любую помощь

Спасибо

Эндрю

4b9b3361

Ответ 1

Добавить преобразования преобразования данных для преобразования строковых столбцов из строк, отличных от Unicode (DT_STR), в строки Unicode (DT_WSTR).

Вам нужно сделать это для всех столбцов строки...

Ответ 2

Ниже были обработаны следующие шаги:

1). щелкните правой кнопкой мыши исходную задачу.

2). нажмите "Показать расширенный редактор". расширенная опция редактирования для исходной задачи в ssis

3). Перейдите на вкладку "Свойства ввода и вывода".

4). выберите выходной столбец, для которого вы получаете ошибку.

5). Его типом данных будет "String [DT_STR]".

6). Измените этот тип данных на "Unicode String [DT_WSTR]". Изменение типа данных в строку юникода

7). сохрани и закрой. Надеюсь это поможет!

Ответ 3

  • Сначала добавьте блок преобразования данных в диаграмму потока данных.

  • Откройте блок преобразования данных и отметьте столбец, для которого отображается ошибка. Ниже измените свой тип данных на строку unicode (DT_WSTR) или какой-либо тип данных ожидается и сохраните.

  • Перейдите к целевому блоку. Перейдите к отображению в нем и сопоставьте вновь созданный элемент с его соответствующим адресом и сохраните.

  • Щелкните правой кнопкой мыши свой проект в решении explorer.select. Выберите свойства конфигурации и выберите в нем отладку. В этом случае установите для параметра Run64BitRunTime значение false (поскольку excel не очень хорошо справляется с 64-разрядным приложением).

Ответ 4

В приведенном выше примере я продолжал терять значения, я думаю, что отсрочка проверки приведет к сохранению новых типов данных как части метаданных.

В диспетчере соединений для "Диспетчер подключений Excel" установите для параметра "Задержка проверки" значение "Неверно" из свойств.

Затем в потоке данных Задача назначения для Excel задает значение ValidationExternalMetaData для False, снова из свойств.

Теперь это позволит вам щелкнуть правой кнопкой мыши по целевой задаче Excel и перейти к расширенному редактору для назначения Excel → крайняя правая вкладка - свойства ввода и вывода. В разделе "Внешние столбцы" вы сможете теперь изменять значения типов данных и длины проблемных столбцов, и теперь это можно сохранить.

Удачи!

Ответ 5

У меня была одна и та же проблема, и я попробовал все, что здесь написано, но все равно дал мне ту же ошибку. В столбце, который я пытался преобразовать, оказалось значение NULL.

Удаление значения NULL решило мою проблему.

Cheers, Ahmed

Ответ 6

Я испытал это условие, когда установил клиент 32-битного клиента Oracle версии 12, подключенный к серверу Oracle 12 Server, работающему в Windows. Хотя оба источника Oracle и SqlServer-destination НЕ являются Юникодом, я продолжал получать это сообщение, как если бы колонки oracle были Unicode. Я решил проблему с вставкой коробки преобразования данных и выбирая тип DT-STR (не unicode) для полей varchar2 и DT-WSTR (unicode) для числовых полей, тогда я сбросил "COPY OF" из имени выходного поля. Обратите внимание, что я продолжал получать ошибку, потому что я связал стрелку исходного кода с полем преобразования ПЕРЕД настройкой типов конверсии. Поэтому мне пришлось переключать исходный код, и это очистило все ошибки в поле назначения.

Ответ 7

Вместо добавления ранее предложенной конверсии данных вы можете перевести столбец nvarchar в столбец varchar. Это предотвращает ненужный шаг и имеет более высокую производительность, чем альтернатива.

В выборе вашего оператора SQL замените date на CAST(date AS varchar([size])). По какой-то причине это еще не изменило тип выходных данных. Для этого сделайте следующее:

  • Щелкните правой кнопкой мыши на шаге OLE DB Source и откройте расширенный редактор.
  • Перейти к свойствам ввода и вывода
  • Выберите выходные столбцы
  • Выберите колонку
  • В свойствах Data Type измените DataType на строку [DT_STR]
  • Изменить длину на длину, указанную в операторе CAST

После этого ваши исходные данные будут выводиться как varchar, и ваша ошибка исчезнет.

Источник