Ответ 1
Добавить преобразования преобразования данных для преобразования строковых столбцов из строк, отличных от Unicode (DT_STR), в строки Unicode (DT_WSTR).
Вам нужно сделать это для всех столбцов строки...
У меня есть пакет 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.
Оцените любую помощь
Спасибо
Эндрю
Добавить преобразования преобразования данных для преобразования строковых столбцов из строк, отличных от Unicode (DT_STR), в строки Unicode (DT_WSTR).
Вам нужно сделать это для всех столбцов строки...
Ниже были обработаны следующие шаги:
1). щелкните правой кнопкой мыши исходную задачу.
2). нажмите "Показать расширенный редактор". расширенная опция редактирования для исходной задачи в ssis
3). Перейдите на вкладку "Свойства ввода и вывода".
4). выберите выходной столбец, для которого вы получаете ошибку.
5). Его типом данных будет "String [DT_STR]".
6). Измените этот тип данных на "Unicode String [DT_WSTR]". Изменение типа данных в строку юникода
7). сохрани и закрой. Надеюсь это поможет!
Сначала добавьте блок преобразования данных в диаграмму потока данных.
Откройте блок преобразования данных и отметьте столбец, для которого отображается ошибка. Ниже измените свой тип данных на строку unicode (DT_WSTR) или какой-либо тип данных ожидается и сохраните.
Перейдите к целевому блоку. Перейдите к отображению в нем и сопоставьте вновь созданный элемент с его соответствующим адресом и сохраните.
Щелкните правой кнопкой мыши свой проект в решении explorer.select. Выберите свойства конфигурации и выберите в нем отладку. В этом случае установите для параметра Run64BitRunTime значение false (поскольку excel не очень хорошо справляется с 64-разрядным приложением).
В приведенном выше примере я продолжал терять значения, я думаю, что отсрочка проверки приведет к сохранению новых типов данных как части метаданных.
В диспетчере соединений для "Диспетчер подключений Excel" установите для параметра "Задержка проверки" значение "Неверно" из свойств.
Затем в потоке данных Задача назначения для Excel задает значение ValidationExternalMetaData для False, снова из свойств.
Теперь это позволит вам щелкнуть правой кнопкой мыши по целевой задаче Excel и перейти к расширенному редактору для назначения Excel → крайняя правая вкладка - свойства ввода и вывода. В разделе "Внешние столбцы" вы сможете теперь изменять значения типов данных и длины проблемных столбцов, и теперь это можно сохранить.
Удачи!
У меня была одна и та же проблема, и я попробовал все, что здесь написано, но все равно дал мне ту же ошибку. В столбце, который я пытался преобразовать, оказалось значение NULL.
Удаление значения NULL решило мою проблему.
Cheers, Ahmed
Я испытал это условие, когда установил клиент 32-битного клиента Oracle версии 12, подключенный к серверу Oracle 12 Server, работающему в Windows. Хотя оба источника Oracle и SqlServer-destination НЕ являются Юникодом, я продолжал получать это сообщение, как если бы колонки oracle были Unicode. Я решил проблему с вставкой коробки преобразования данных и выбирая тип DT-STR (не unicode) для полей varchar2 и DT-WSTR (unicode) для числовых полей, тогда я сбросил "COPY OF" из имени выходного поля. Обратите внимание, что я продолжал получать ошибку, потому что я связал стрелку исходного кода с полем преобразования ПЕРЕД настройкой типов конверсии. Поэтому мне пришлось переключать исходный код, и это очистило все ошибки в поле назначения.
Вместо добавления ранее предложенной конверсии данных вы можете перевести столбец nvarchar в столбец varchar. Это предотвращает ненужный шаг и имеет более высокую производительность, чем альтернатива.
В выборе вашего оператора SQL замените date
на CAST(date AS varchar([size]))
. По какой-то причине это еще не изменило тип выходных данных. Для этого сделайте следующее:
После этого ваши исходные данные будут выводиться как varchar, и ваша ошибка исчезнет.