SSIS目标新表ntext

时间:2012-03-23 16:21:12

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  2. 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]的原因