web-dev-qa-db-ja.com

SSIS列はUnicodeと非Unicode文字列データ型の間で変換できません

SQL ServerからPDA Serverにテーブルを転送しています。これは私のデータフローです。

ADO NETソース---> OLE DB Destination

ソーステーブルのすべての列はvarcharであるため、宛先テーブルを作成するときに、それらのデータ型が同じであることを確認しました。したがって、両方のテーブルには、すべての列にvarcharデータ型があります。

ただし、まだエラーが発生します。列「col1」は、Unicodeと非Unicodeの文字列データ型の間で変換できません。奇妙なことに、OLE DB DestinationをADO Net Destinationに置き換えると、正常に機能するように見えますが、OLE DBなので、バッチごとの行などを指定できます。

誰か助けてもらえますか?

2
tee

ソースと宛先の間の線をダブルクリックし、[メタデータ]タブを選択します。これにより、SSISが推論したすべての列とデータ型が一覧表示されます。

私はそれをあなたのソースと比較し、100%それらが整合することを確認します。

起こり得ることは、データフローを初めて構築したときに、SSISがその時点でのタイプに基づいてメタデータを設定することです。 col1はnvarcharとして解釈されるため、ある程度の長さのDT_WSTRとして設定されます。

時間が経過し、クエリを更新すると、ソースはvarcharになりますが、col1と呼ばれます。 varcharは常にnvarcharに収まるため、その列の形状は「変更」されないため、SSISは内部をやり直す必要がありません。

SSISが古いメタデータにしがみついている場合、私のクリックパスは

  1. 既存のクエリをコピーする
  2. クエリをSELECT 1 as TotallyNewAndUniqueColumnに変更します
  3. その後、SSISはすべてのメタデータが正常に機能しなくなったことを報告し、自動修正したいので、[はい]をクリックします。
  4. 元のクエリを再貼り付けすると、現在のメタデータが取得されます。
3
billinkc