如果我有相同的表和相同的多个数据库服务器。如何连接到多个数据库服务器,从每个数据库服务器获取这些记录,然后显示组合结果的前 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 允许您存储可以索引(为了速度)并且可以多次查询的聚合结果。
至于将数据从服务器导入到服务器,只需选择一种方法即可。有两种解决方案可以深入了解细节。
于 2013-11-12T15:13:55.090 回答