如何连接到多个数据库服务器,显示组合结果?

时间:2013-11-12 15:05:28

标签: c# asp.net .net sql-server entity-framework

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

2 个答案:

答案 0 :(得分:0)

这里有几个解决方案。

解决方案1:

1 - 在服务器A上创建一个临时数据库/表。

2 - 将所有服务器中的所有数据导入表格。

3 - 查询表以获得结果。

解决方案2:

1 - 为服务器A上的每个服务器B .. Z创建一个链接服务器。

2 - 在链接服务器上使用4部分表示法创建查询。

总的来说,由于您使用的是分布式事务,因此解决方案2可能会很慢。

解决方案1允许您存储可以编制索引的聚合结果(速度),并且可以多次查询。

至于将数据从服务器导入服务器,只需选择一种方法即可。有两种解决方案可供参考。

答案 1 :(得分: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();