2014-01-14 51 views
6

私はOLEDBの宛先にNVARCHAR(MAX)フィールドを持つSSISパッケージを持っています。このフィールドは、データフローでも満たされていません。データフロータスクが失敗し、「OLE DBアクセサを作成できません。列のメタデータが有効であることを確認してください」というエラーが表示されます。SSIS:OLE DBアクセサを作成できません。列のメタデータが有効であることを確認します

私はこの類似の質問を見ました:How do I fix the multiple-step OLE DB operation errors in SSIS?と私のメタデータを調べて、それを助言しました。私はSSISがDT_WSTRではなくNTEXTとして問題の列をマッピングしていることを発見しました。私は長さが8000のDT_WSTRに型を変更しようとしましたが、同じエラーが発生します。また、フィールドをNULLで埋めてみました。同じエラーです。 「外部メタデータの検証」をfalseに設定しても差は生じませんでした。どのようにそれを修正するための任意の提案?

ありがとうございました。

+0

どのデータ型のソースをその宛先列に渡していますか? – Kishore

+3

非常に刺激的なエラーです。私が正しく覚えていれば、各ソース/トランスフォーメーションのリフレッシュメタデータをフロー内で強制的に動作させる必要がありました。強制リフレッシュソースとは、他のテーブルを選択して保存し、古いテーブルを再度選択して保存します。 – OzrenTkalcecKrznaric

+0

@Kishoreソースがありません。送信先に違反している列にはソースがありません:-( – Oscar

答えて

1

ちょうどレコードのために、私はこのバグが起こらない.Net Destinationを使用して終了しました。

4

これを解決する別の方法(おそらくより早い)が見つかりましたが、少し面倒です。あなたのデータが切り捨てられるかもしれないという警告があります。それを使用することはデータが使用されているかどうかに依存します。

違反列の出力がUnicode text stream [DT_NTEXT]に設定されていると仮定します。最初の変換の後に2番目のデータ変換ステップを追加し、最初の変換の出力を2番目の変換に入れ、Unicode text stream [DT_NTEXT]からUnicode string [DT_WSTR](長さ= 4000)にマップできます。切り捨ての可能性が警告されますが、2番目の変換の出力データを使用できるようになりました。

+0

切り捨てがオプションの場合、悪い考えではありません。私は自分の質問に答えたばかりで、いつ問題を解決したのか分かりませんでした。 – Oscar

0

Iは、長さが表の列のサイズとコードページであると(私は(> DT_STR、<>、<)派生列を使用し、すべての必要なフィールドを行っACCESSデータベースから作業これと同じ問題を抱えていました1252)。これはACCESSで動作するだけでなく、EXCELソースでも機能しました。

これが役に立ちます。

0

.NET宛先を使用して終了しましたが、実際の問題は、ターゲットテーブルの列がより古いということでした。

宛先を別の表に変更してから前の表に変更するか、またはその操作を削除してから、正しいマッピングでもう一度追加することによって、表をリフレッシュしてみてください。

1

私も同様の問題がありました。私はNVARCHAR(MAX)からNVARCHAR(4000)に変更されたSQLフィールドを持っていましたが、私があなたに説明したのと同じエラーを出しました。信じられないほどイライラする。フィールドをNTEXTとして間違って表示しているOLE DBの宛先の列のマッピングを解除することで問題を解決できました。次に、OLE DBの宛先の前にある各SSIS操作を実行し、[詳細エディタを表示...]を選択し、[更新]をクリックします。前のステップごとにこれを実行した後、私はその列を再マッピングし、SSISは最終的にその列が現在DT_WSTRであることを確かめました。

関連する問題