Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当我只使用LinqToSql和Ado.Net时,为什么TransactionScope使用分布式事务_Sql Server_Linq To Sql_Ado.net_Transactionscope_Distributed Transactions - Fatal编程技术网

Sql server 当我只使用LinqToSql和Ado.Net时,为什么TransactionScope使用分布式事务

Sql server 当我只使用LinqToSql和Ado.Net时,为什么TransactionScope使用分布式事务,sql-server,linq-to-sql,ado.net,transactionscope,distributed-transactions,Sql Server,Linq To Sql,Ado.net,Transactionscope,Distributed Transactions,我们在一台机器上遇到问题,错误消息如下: “服务器XXX上的MSDTC不可用。” 代码使用TransactionScope包装一些LingToSql数据库代码;事务内部还有一些原始的Ado.net 由于只访问一个sql数据库(2005),为什么要使用分布式事务 (我不想知道如何启用MSDTC,因为代码需要在服务器上使用当前设置)当事务使用多个数据库连接时,几乎总是会发生这种情况。假设您正在更新两个表。您可以使用一个连接更新第一个表,但使用另一个连接更新第二个表。这将导致事务升级到MSDTC,即使

我们在一台机器上遇到问题,错误消息如下:

“服务器XXX上的MSDTC不可用。”

代码使用TransactionScope包装一些LingToSql数据库代码;事务内部还有一些原始的Ado.net

由于只访问一个sql数据库(2005),为什么要使用分布式事务


(我不想知道如何启用MSDTC,因为代码需要在服务器上使用当前设置)

当事务使用多个数据库连接时,几乎总是会发生这种情况。假设您正在更新两个表。您可以使用一个连接更新第一个表,但使用另一个连接更新第二个表。这将导致事务升级到MSDTC,即使使用TransactionScope对象也是如此

我们解决这个问题的方法是,在执行事务时,我们对所有写操作使用单个数据库上下文对象。这消除了升级。自从这样做以来,我们从未出现过MSDTC消息


Randy

…单个datacontext无法单独完成,您还需要提供到DCs构造函数的连接,以确保它使用单个连接。。。。