为什么在运行SSIS作业并告诉目标编辑器创建新表时,它会将新表中的某些文本字段默认为NTEXT数据类型,即使所讨论的字段的源表是varchar?< / p>
答案 0 :(得分:2)
我的回答是假设您使用的是ADO.Net数据源,并且有问题的字段是VARCHAR(MAX)。
ADO.NET数据源将字符串转换为DT_WSTR(因此是NTEXT的N部分)。通过将数据流源类型更改为OLEDB或在数据转换转换中转换数据,可以获得保留非unicode。
This stackoverflow答案解释了SQL Server如何处理VARCHAR(MAX)。所以我的理解是当SSIS看到VARCHAR(MAX)时,它知道如果数据大于8000个字符,则需要转换。因此,SSIS会自动将数据转换为TEXT,并让SQL Server处理它将数据插入VARCHAR(MAX)目的地。
答案 1 :(得分:1)
因为VARCHAR(x)和VARCHAR(MAX)是不同的SQL Server类型。 Varchar(max)由SQL Server处理,如TEXT数据类型。
这就是SSIS上varchar
列为string [DT_STR]
且varchar (max)
为text stream [DT_TEXT]
的原因