2012-03-23 57 views

回答

2

我的答案假定您使用的是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)目標中。

1

因爲VARCHAR(x)和VARCHAR(MAX)是不同的SQL Server類型。 SQL Server將像TEXT數據類型一樣處理Varchar(max)。

這就是爲什麼varcharstring [DT_STR]varchar (max)text stream [DT_TEXT]在SSIS