在同一个事务中对不同的SQL server和数据库使用Transaction Scope的问题 &g



下面的方法使用TransactionScope对象进行未提交的读取。

在同一个事务中用不同的方法使用两个不同的SQL server时会出现这个问题。

using var transactionScope = TransactionScopeBuilder.ReadUncommitted();
var cards = await GetCards(Id);
var products = await _netRepository.GetProducts(Id, Module);
var matchedCards = ((INetMatch<result, AssociatedProducts>)this)
.MatchClientProducts(cards, products);
transactionScope.Complete();

其中GetProductsGetCards查询到不同的数据库和服务器。

调用该方法时出现以下消息:

System.Threading.Tasks。TaskCanceledException: A task was cancelled .

任何帮助都是有用的,谢谢。

事务范围不会被评估为不同数据源的轻量级事务,这将类似于MTS事务,因此您必须确保每个数据源供应商都支持它,您需要从每个供应商配置中启用它,并且您需要查看事件日志错误

System.Threading.Tasks。TaskCanceledException:任务被取消。我知道当一个事务被强制回滚时,您会遇到这种异常,可能是超时问题,或者一个供应商不接受/支持MTS事务,导致整个MTS事务回滚,或者其中一个服务器中的防火墙规则出现了一些问题。你可以利用这个线索,从这里开始

相关内容