为什么从SQL命令OLE DB源获取数据类型DT_NTEXT?

时间:2019-02-05 21:57:42

标签: sql-server ssis etl ssis-2012 ntext

在我们的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源>显示高级编辑器>输入和输出属性时,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 个答案:

答案 0 :(得分:2)

DT_WSTRDT_STR的最大长度分别为4,000和8,000个字符。结果,它们太小而无法映射到(n)varchar(MAX),因此使用了DT_NTEXTDT_TEXT

相关问题