同じテーブルと同じ複数のデータベース サーバーがある場合。複数のデータベース サーバーに接続し、各データベース サーバーからそれらのレコードを取得して、組み合わせた結果の最初の 10 個を表示する方法は?
1157 次
2 に答える
0
たとえば、サンプル テーブル Orders に対して異なる接続文字列を使用して複数のインスタンスをクエリしている場合、次のことを試すことができます。
var orders = ConfigurationManager.ConnectionStrings.Cast<ConnectionStringSettings>()
// filter to the relevant connection strings
.Where(s => s.ConnectionString.ToLower().Contains("metadata"))
.SelectMany(s => {
// for each connection string, select a data context
using(var context = new NorthwindEntities(s.ConnectionString)) {
// for each context, select all relevant orders
return context.Orders.ToArray();
} // and dispose of the context when done with it
})
.Take(10)
.ToList();
于 2013-11-12T15:21:33.987 に答える
0
これが私の頭の上からのいくつかの解決策です。
解決策 1:
1 - サーバー A にステージング データベース/テーブルを作成します。
2 - すべてのサーバーからすべてのデータをテーブルにインポートします。
3 - テーブルをクエリして結果を取得します。
解決策 2:
1 - サーバー A の各サーバー B .. Z にリンク サーバーを作成します。
2 - リンク サーバーで 4 つの部分表記を使用してクエリを作成します。
全体として、分散トランザクションを使用しているため、ソリューション 2 は遅くなる可能性があります。
ソリューション 1 では、(速度のために) インデックスを作成し、複数回クエリを実行できる集計結果を保存できます。
サーバーからサーバーへのデータのインポートに関しては、その方法を選択するだけです。詳細に入るには、2 つの多くの解決策があります。
于 2013-11-12T15:13:55.090 に答える