SSISジョブを実行し、宛先エディターに新しいテーブルを作成するように指示すると、問題のフィールドのソーステーブルがvarcharであるにもかかわらず、特定のテキストフィールドがデフォルトで新しいテーブルのNTEXTデータ型になるのはなぜですか?
2055 次
2 に答える
2
私の答えは、ADO.Netデータソースを使用していて、問題のフィールドがVARCHAR(MAX)であると想定しています。
ADO.NETデータソースは、文字列をDT_WSTRに変換します(したがって、NTEXTのN部分)。非ユニコードを保持するには、データフローソースタイプをOLEDBに変更するか、データ変換変換でデータを変換します。
このstackoverflowの回答は、SQL ServerがVARCHAR(MAX)を処理する方法を説明しています。したがって、私の理解では、SSISがのVARCHAR(MAX)を参照すると、データが8000文字を超える場合は、変換が必要になることがわかります。その結果、SSISはデータを自動的にTEXTに変換し、SQL ServerにデータをVARCHAR(MAX)宛先に挿入して処理させます。
于 2012-03-23T20:56:55.310 に答える
1
VARCHAR(x)とVARCHAR(MAX)は異なるSQLServerタイプであるためです。Varchar(max)は、SQLServerによってTEXTデータ型のように扱われます。
そのため、varchar
列はSSISにstring [DT_STR]
あり ます。varchar (max)
text stream [DT_TEXT]
于 2012-03-24T17:01:34.330 に答える