使用单个ado.net查询查询多个数据库

use*_*486 6 c# sql sql-server ado.net

我有分布式数据库架构,其中数据存储在多个SQL服务器中.

如何通过运行单个查询来选择/更新/删除.例如,"select*from employees"应该从我拥有的所有数据库中返回数据.

如何编写跨多个SQL服务器运行的单个查询,并将单个统一视图添加到我的Web服务器.

注意:由于SQL服务器的数量可能会在不同的时间发生变化,因此我正在寻找除链接查询之外的其他内容,因为大规模管理链接查询(向上或向下)是一件很大的痛苦

Mar*_*ell 6

要与不同的数据库/连接通信,您需要通过TransactionScope进行分布式事务 ; 幸运的是,这实际上比db-transactions 更容易(尽管您需要对System.Transactions.dll的引用):

using(TransactionScope tran = new TransactionScope()) {
    // lots of code talking to different databases / connections
    tran.Complete();
}
Run Code Online (Sandbox Code Playgroud)

此外,TransactionScope自然嵌套,SqlConnection自动登记,使其非常易于使用.


Ode*_*ded 3

使用TransactionScope

如果在范围内打开到不同服务器的连接,事务将升级为分布式事务。

例子:

using (TransactionScope scope = new TransactionScope())
{
    conn1.Open(); //Open connection to db1
    conn2.Open(); //Open connection to db2

    // Don't forget to commit the transaction so it won't rollback
    scope.Complete()
}
Run Code Online (Sandbox Code Playgroud)