0

SSISジョブを実行し、宛先エディターに新しいテーブルを作成するように指示すると、問題のフィールドのソーステーブルがvarcharであるにもかかわらず、特定のテキストフィールドがデフォルトで新しいテーブルのNTEXTデータ型になるのはなぜですか?

4

2 に答える 2

2

私の答えは、ADO.Netデータソースを使用していて、問題のフィールドがVARCHAR(MAX)であると想定しています。

  1. ADO.NETデータソースは、文字列をDT_WSTRに変換します(したがって、NTEXTのN部分)。非ユニコードを保持するには、データフローソースタイプをOLEDBに変更するか、データ変換変換でデータを変換します。

  2. この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 に答える