Почему тип данных DT_NTEXT из команды SQL Source OLE DB?

В нашем пакете служб 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].

Почему тип данных 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 ответ

Решение

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

Другие вопросы по тегам