如果我有相同的表和相同的多个数据库服务器。如何连接到多个数据库服务器,从每个数据库服务器获取这些记录,然后显示组合结果的前10个?
答案 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();