2009-03-26 11 views
0

列名と表名が変更される可能性がありますが、それらはすべて同じデータ宛先に移動する必要があるため、選択文をオンザフライで作成しています。これを実行可能にする他の共通点があります。後でそれらに入る必要がある場合は、 16カラムのselect文を作成しています。常に16のカラムがあります。カラム名が変更され、テーブル名が変更される可能性があります。私はパッケージを実行すると、SELECT文は、うまく構築されますが、データフローを実行しようとしたときに、私は次のエラーを取得する:SSIS外部メタデータ列を削除する必要があります

The "external metadata column "ColumnName" (79)" needs to be removed from the external metadata column collection.

生成されている実際のSQL文は次のとおりです。

select 0 as ColumnName, Column88 as CN1, 0 as CN2, 0 as CN3, 0 as CN4, 
     0 as CN5, 0 as CN6, 0 as CN7, 0 as CN8, 0 as CN9, 0 as CN10, 
     0 as CN11, 0 as CN12, 0 as CN13, 0 as CN14, 0 as CN15 from Table3 

列 'Column88'は動的に生成され、テーブル名も動的に生成されます。他の 'CNx'列のソース列が存在する場合、同じ方法(CN1としてColumn88、CN2としてColumn89、CN3としてColumn90など)が表示され、表名は常に次の形式になります。整数。

誰でも間違っていると私はそれを修正する方法で私を助けてもらえますか?

答えて

4

あなたはここに深くいます。見た目の列名や型を変更することはできないということを読んでおくだけです。入力列の名前とタイプは、ソースから流出するメタデータの名前とタイプになります。それらを変更すると、それらに依存するすべてが失敗する必要があります。

解決策は、おそらく列のエイリアスとキャストを使用して、これらが安定するように調整することです。 1台の場合:

SELECT COLNV, COLINT FROM TABLE1

SELECT CAST(COLV AS NVARCHAR(50)) AS COLNV, CAST(COLSMALL AS INTEGER) AS COLINT FROM TABLE2

のための試してみて、それはあなたのために働くかどうかを確認することを与えます。パッケージの残りの部分を修正することなくメタデータを変更することはできません。

0

私はストアドプロシージャ(tempテーブルに吐き出される)からSQLを削除して2つのカラムを追加する必要があるとき、同じ問題が発生しました。この問題を解決するには、SSISパッケージの各部分を最初から(ソース - 私の場合はテンポラリテーブルから取り出して)、目的地まで行っていなければなりませんでした(私の場合、フラットファイル接続ファイルcsv)。途中ですべてのマッピングをやり直さなければならず、SSISのGUIデータフロータスクでのゲームのエラーを監視しました。

このエラーは、周囲に丸で赤いXの形で表示されました。私は上に横たわり、メタデータのことを言いました...私はそれをダブルクリックし、もう存在しなかったし、削除したいかどうかを知りたがっていました。私はそれを削除しましたが、このエラーは、マッピングがオフであり、すべてがすべて正しくマップされていることを確認するために、SSISパッケージの各部分を調べる必要があることをSSISに示します。

0

テーブルの前でビューを使用することはどうですか。ビューをSSISソースとして呼び出すことです。その方法では、必要に応じて列をマップし、一貫した列パターンを維持するためにISNULLまたはCOALESCE関数を使用することができます。