【问题标题】:SSIS Destination new table ntextSSIS目标新表ntext
【发布时间】:2012-03-25 01:01:34
【问题描述】:

为什么在运行 SSIS 作业并告诉目标编辑器创建新表时,即使相关字段的源表是 varchar,它仍会将新表中的某些文本字段默认为 NTEXT 数据类型?

【问题讨论】:

    标签: sql-server sql-server-2008 ssis text-formatting ntext


    【解决方案1】:

    我的回答假设您使用的是 ADO.Net 数据源,并且有问题的字段是 VARCHAR(MAX)。

    1. ADO.NET 数据源将字符串转换为 DT_WSTR(因此是 NTEXT 的 N 部分)。保留非 unicode 可以通过将数据流源类型更改为 OLEDB 或在数据转换转换中转换数据来获得。

    2. This stackoverflow 回答解释了 SQL Server 如何处理 VARCHAR(MAX)。所以我的理解是当 SSIS 看到 VARCHAR(MAX) 时,它知道如果数据大于 8000 个字符,则需要转换。因此,SSIS 自动将数据转换为 TEXT 并让 SQL Server 处理它,将数据插入到 VARCHAR(MAX) 目标中。

    【讨论】:

      【解决方案2】:

      因为 VARCHAR(x) 和 VARCHAR(MAX) 是不同的 SQL Server 类型。 SQL Server 将 Varchar(max) 视为 TEXT 数据类型。

      这就是为什么 varchar 列是 string [DT_STR]varchar (max) 在 SSIS 上是 text stream [DT_TEXT]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2022-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多