Почему тип данных 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
используются.