SSIS «Столбец» и «Параметр» не могут преобразовывать строковые типы данных в Юникоде и не в Юникоде - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть задача потока данных, которая делает это:

  1. Из двух разных источников OLE DB, запустите команду SQL, чтобы выбрать некоторые данные
  2. Объединить Соединить два источника БД
  3. Поиск в другом источнике БД SQL, проверьте, существуют ли уже данные или нет
  4. На основе результатов поиска совпадения поиска и вывода поиска без совпадения, запустите оператор INSERT с другими входными параметрами.

enter image description here

Проблема в том, что во время ВСТАВКИ она жалуется на столбец 'a' и параметр '1':

Невозможно выполнить преобразование между строковыми типами данных Unicode и Unicode.

Я посмотрел это предложение StackFlow, чтобы изменить строку столбца 'a' на (DT_WSTR).Однако для этого типа данных уже задан столбец.

Столбец 'a' isна самом деле не захватывает непосредственно из базы данных, а вместо этого постоянное значение

SELECT 'abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' AS a

Есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 02 февраля 2019

Я думаю, что основная проблема заключается в том, как запрос анализируется в OLEDB Command и как ядро ​​базы данных SQL Server определило тип данных параметра.

Попробуйте использовать функцию CAST(), чтобы избежать этого:

 SELECT CAST('abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' as VARCHAR(255)) AS a

Или, если вы хотите преобразовать в Unicode:

SELECT CAST('abc'+ FORMAT(GETDATE(),'yyyyMMdd') + 'zz208874' as NVARCHAR(255)) AS a

или, вы можете определить строки как Unicode:

SELECT N'abc'+ FORMAT(GETDATE(),'yyyyMMdd') + N'zz208874' AS a

Для получения дополнительной информации оПроблемы с разбором типов данных параметров, вы можете проверить мой ответ на следующий вопрос:

...