6

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

問題は、構成ファイルの宛先テーブル名を (メモ帳を使用して) 変更すると、次のエラー「vs_needsnewmetadata」が表示されることです。私は問題を理解していると思います...パッケージを最初にセットアップしたときに、宛先テーブルの列のマッピングが修正されました。

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

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

4

4 に答える 4

6

Data Source Destination プロパティで DelayValidation を False に設定しましたか? そうでない場合は、それを試してください。

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

于 2008-09-26T21:30:00.067 に答える
2

ソース宛先列を大文字と小文字を区別して一致させると、うまくいきました。

私の場合のようSrNo_prodに dev の列であり、それを使用して dtsx を開発しましたが、prod のように作成されましたが、ケースを からにSrNo_Prod変更した後、パッケージの実行に成功しました。Pp

于 2012-12-13T09:45:06.267 に答える
1

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

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

于 2008-09-26T07:50:43.977 に答える
0

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

連携サーバーの作り方

リンクサーバーが作成されたら、次のようなプログラムを作成するだけです...

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

SSISパッケージに関しては、テーブルの列のプロパティを変更するときにメタデータが更新されるように、常にパッケージを再度開いて再構築する必要がありました。

于 2008-09-23T23:00:31.053 に答える