为什么在运行 SSIS 作业并告诉目标编辑器创建新表时,即使相关字段的源表是 varchar,它也会将新表中的某些文本字段默认为 NTEXT 数据类型?
问问题
2055 次
2 回答
2
我的回答假设您使用的是 ADO.Net 数据源并且有问题的字段是 VARCHAR(MAX)。
ADO.NET 数据源将字符串转换为 DT_WSTR(因此是 NTEXT 的 N 部分)。保留非 unicode 可以通过将数据流源类型更改为 OLEDB 或在数据转换转换中转换数据来获得。
这个stackoverflow 答案解释了 SQL Server 如何处理 VARCHAR(MAX)。所以我的理解是当 SSIS 看到 VARCHAR(MAX) 时,它知道如果数据大于 8000 个字符,则需要转换。因此,SSIS 自动将数据转换为 TEXT 并让 SQL Server 处理它,将数据插入到 VARCHAR(MAX) 目标中。
于 2012-03-23T20:56:55.310 回答
1
because VARCHAR(x) and VARCHAR(MAX) are different SQL Server Types. Varchar(max) is treated by SQL Server like the TEXT data type.
That's why the varchar
columns are string [DT_STR]
and varchar (max)
are text stream [DT_TEXT]
on SSIS
于 2012-03-24T17:01:34.330 回答