0

そのため、特定のレポートを表示するためにしばしば結合しなければならない 2 つのシステムがあります。私は、SQL Server に保存されているドキュメントのメタデータを、通常はパーツ番号で保存するシステムを 1 つ持っています。ドキュメントを取得したい部品番号のリストは、ERP システムの Oracle テーブルから取得されます。私の現在の方法は次のようになります。

  1. ERP (Oracle) システムから にデータを取得しますDataTable
  2. string[]列からの部品番号のコンパイル。
  3. ステートメントを使用して、IN()ドキュメント (MSSQLSVR) システムからすべてのドキュメント情報を別の に取得しますDataTable
  4. ERP に列を追加しDataTable、行をループします。
  5. docs からドキュメント情報を入力しますDataTableif(erpRow["ITEMNO"] == docRow["ITEMNO"])

これは、私には本当に非効率的だと感じています。明らかにJOIN、2 つのテーブルに対して 1 つの接続文字列を使用したり、データベース リンクを使用したりすることはできないため、各データベースに対して 1 つずつ、合計 2 つの呼び出しが必要になると想定しています。これら 2 つのセットを結合する別の方法はありますか?

4

2 に答える 2

3

LikedServer アプローチ ( http://msdn.microsoft.com/en-us/library/ms188279.aspx ) をお勧めします。Oracle Linked Server からデータを取得し、ローカルで JOIN を実行して、結合されたデータを返す SQL Server 側でストアド プロシージャを記述します。

SQL Server は、JOIN を効率的に実行するように設計されています。アプリ層でその機能を再作成しようとする必要はありません。

于 2013-06-24T21:17:00.543 に答える
2

データベースリンクを除外したので、次のことを行います

  1. ERP (Oracle) システムから DataTable にデータを取得します。
  2. テーブル値パラメーターを介して DataTable をパラメーターとして SQL Server に渡す
  3. データを返します (古いセットを更新するループはありません)
于 2013-06-24T21:25:29.060 に答える