1

如果我有相同的表和相同的多个数据库服务器。如何连接到多个数据库服务器,从每个数据库服务器获取这些记录,然后显示组合结果的前 10 个?

4

2 回答 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 允许您存储可以索引(为了速度)并且可以多次查询的聚合结果。

至于将数据从服务器导入到服务器,只需选择一种方法即可。有两种解决方案可以深入了解细节。

于 2013-11-12T15:13:55.090 回答