Почему тип данных DT_NTEXT из команды SQL Source OLE DB? - PullRequest
0 голосов
/ 06 февраля 2019

В нашем пакете служб SSIS в редакторе исходного кода OLE DB потока данных диспетчер соединений является командой SQL, а текст команды SQL выглядит так:

With Managers AS (
  select distinct t1.ID,
    STUFF((SELECT distinct ' & ' + t2. MgrName
      from myTableA t2
      where t1.ID = t2.ID
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
      ,1,3,'') MgrName
  from myTableA)
select Managers.MgrName as ManagerName
:
FROM myTableB INNER JOIN myTableA 
ON myTableB.ID = myTableB.ID

Когда я щелкаю правой кнопкой мыши на OLE DBИсходный код> Показать расширенный редактор> Свойства ввода и вывода, DataType ManagerName является текстовым потоком Unicode [DT_NTEXT].

Почему DataType DT_NTEXT, а не DT_WSTR или DT_STR?

Назначение OLE DB (Тип данных базы данных SQL Server) для этого является VARCHAR, поэтому, прежде чем я смогу заполнить пункт назначения OLE DB, мне нужно выполнить «Преобразование данных» из

Unicode text stream [DT_NTEXT]
To 
Unicode string [DT_WSTR]
To
string [DT_WSTR]

1 Ответ

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

DT_WSTR и DT_STR имеют максимальную длину 4000 и 8000 символов соответственно.В результате они слишком малы для сопоставления с (n)varchar(MAX), поэтому используются DT_NTEXT и DT_TEXT.

...