以前の同僚から継承した[〜#〜] ssis [〜#〜]パッケージを実行しようとしています。パッケージはAccessデータベースからプルし、データを[〜#〜] sql [〜#〜]データベースに配置します。
フィールドの1つで、「推奨事項」と呼びましょう。Accessデータベースのタイプは「メモ」です。 SQL出力データベースの列のタイプはvarchar(max)
エラー:0xC002F446 at Data Flow Task、OLE DB Destination [218]: "Recommendations"列のバインディングの設定中にエラーが発生しました。バインディングステータスは "DT_NTEXT"でした。データフロー列タイプは「DBBINDSTATUS_UNSUPPORTEDCONVERSION」です。OLE DBタイプの "DBTYPE_IUNKNOWN"から宛先列タイプの "DBTYPE_WVARCHAR"への変換は、このプロバイダーではサポートされていない可能性があります。
さらに私を混乱させたのは、タイプmemoの別の列であり、これもDT_NTEXTとして処理され、varchar(max)に配置されます。 = SQLデータベースのデータ型。エラーメッセージをスローしません。多数の変換オブジェクトタイプを試しましたが、まだパッケージを正常に実行できていません。
次の手順を実行することで、このエラーを再現できました。
nvarchar(100)
に変更しますntext
にし、長さを_100
_より大きくします。これにより、宛先列がオーバーフローし、問題で述べたエラーがスローされます。
_Error: 0xC002F446 at Data Flow Task, OLE DB Destination [2]: An error occurred while setting up a
binding for the "myCol" column. The binding status was "DT_NTEXT". The data flow column type is
"DBBINDSTATUS_UNSUPPORTEDCONVERSION". The conversion from the OLE DB type of "DBTYPE_IUNKNOWN" to
the destination column type of "DBTYPE_WVARCHAR" might not be supported by this provider.
_
つまり、ntext
列の値がnvarchar(max)
を超えているため、オーバーフローが発生していると思います。
列をdt_wstr(510)
に変換する以前のバージョンでは、これは、おそらくntext値を宛先列に収まるサイズに切り捨てているために機能します。値が実際にそのサイズに収まる場合は、それを解決策として使用してください。ソース値が大きくなる可能性がある場合は、SQLの宛先列を適切なものに変更してください。これはntext
にすることができますが、非推奨になっているため、これをvarbinary(max)
に変更することをお勧めします。
この問題は、データの '(アポストロフィ)が原因です。アポストロフィの例があるレコードを削除します:コミュニティの代わりにタイプコミュニティ