4

あるデータベースから別のデータベースにデータを転送する SSIS パッケージを作成しようとしています (ストレート コピー、転送元と転送先のテーブルは同じ構造です)。レコードのサブセット (パッケージが最後に実行されてから作成または変更されたもの) を選択し、更新が必要なレコードを決定する宛先データベースの sproc にそれらをダンプしようとしています。どのレコードを挿入する必要があるか。

これをデータ フロー オブジェクト内で行うか、オブジェクトからレコードを転送して、SQL 実行タスクで行うにはどうすればよいですか?

OLE DB コマンドは一度に 1 つのレコードに対してしか機能しないため、使用したくありません。2 つのデータベースは別の場所にある別のマシンにあり、実行に時間がかかりすぎる DTS パッケージを置き換えるためにこのパッケージを作成しているため、このパッケージの実行にできるだけ時間がかからないようにしたいと考えています (データベース全体が削除されます)。宛先テーブルの内容と、変更されたかどうかにかかわらず、すべての再コピー)

4

1 に答える 1

2

SSIS は、テーブル値パラメーターをサポートしていません。達成しようとしていることには、いくつかの回避策があります。

  • CodePlex http://ssisctc.codeplex.com/wikipage?title=MERGE%20Destinationのこれを含む、いくつかのサードパーティの UPSERT/MERGE 宛先があります。
  • OLEDB 変換先を使用してサーバー上の一時テーブルに行を挿入し、SQL 実行タスクから一時テーブルに対してストアド プロシージャを実行できます。(これは、現在のプロジェクトで行ったことです)
  • カスタム .NET スクリプト宛先を作成できます
  • ルックアップ変換を使用して、それらがテーブルに存在するかどうかを確認し、存在しない行を挿入し、他の行に対して OLEDB コマンドを実行できます。これは、少なくともすべての行に対して実行するよりも優れています。
于 2012-10-20T11:45:56.910 に答える