データフロータスクでvs_needsnewmetadataエラーを解決するにはどうすればよいですか?


5

あるSQL Server 2005から別のSQL Server 2005にテーブルのデータをコピーするSSISパッケージがあります。これは「データフロー」タスクで行います。パッケージ設定ファイルで、私は宛先テーブル名を公開します。

問題は、私が次のエラー "vs_needsnewmetadata"を取得する(メモ帳を介して)設定ファイルの宛先テーブル名を変更します。私は問題を理解していると思う...私が最初にパッケージをセットアップするとき、宛先テーブルの列マッピングは固定されています。

質問:ssisパッケージで上記を行う最も簡単な方法は何ですか?

私はプログラムでメタデータを設定する方法についてオンラインで読んだことがありますが、これを避けたいのですが。また、私はC#のコンソールアプリケーションを書いています。すべてのテーブルなどはapp.config ...で指定されていますが、明らかにこのソリューションは十分ではありません。

0

SQL2005サーバーから別のSQL2005サーバーにデータをコピーするだけの場合は、リンクサーバーを作成し、ストアドプロシージャを使用してデータをコピーします。 SSISパッケージは過剰です。

How to Create linked server

リンクサーバーを作成した後、あなただけのプログラムのようなもの...

INSERT INTO server1.dbo.database1.table1(id,name) 
SELECT id, name FROM server2.dbo.database1.table1 

限り、私は常にメタようにパッケージを再開し、再構築しなければならなかったSSISパッケージだろうテーブルの列のプロパティを変更すると、データが更新されます。


1

新しい宛先テーブルに古い列と同じ列があるかどうかを確認します。

列が異なる場合にエラーが発生し、宛先が入力列を表の列にマップできなくなったと考えられます。 2つのテーブルが同じスキーマを持つ場合、このエラーは発生しません。


6

データソースの宛先プロパティでDelayValidationをFalseに設定しましたか?もしそうでなければ、それを試してください。

編集:もちろん、DelayValidationをTrueにする必要があります。そのため、チェックするのではなく、試してみるだけです。また、メモ帳でパッケージを変更するのではなく、テーブル名を変数に入れ、変数を宛先の式に入れてから、変数を.DtsConfig構成ファイルに公開してください。その後、あなたはそれを危険なく変えることができます。


2

大文字と小文字を区別するソースの一致先の列が私の仕事をしました。

などが私の場合にはSrNo_prodは、dev内の列だったし、それを使用して、それがPRODでSrNo_Prodとして作成されている間、私たちは、dtsxを開発し、Pからpにケースの変更を行った後、私たちは、パッケージの実行が成功しました。