0

在我们的 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 的 DataType 是 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]
4

1 回答 1

3

DT_WSTRDT_STR最大长度分别为 4,000 和 8,000 个字符。结果,它们太小而无法与 an(n)varchar(MAX)和 so映射DT_NTEXT并被DT_TEXT使用。

于 2019-02-05T21:59:59.480 回答