今天项目中好多地方的TransactionScope突然出现超时或者空指针的情况,但是近期也无代码的修改与提交。后来仔细研究后发现,是Distributed Transaction Coordinator服务被其他软件莫名关闭。
大概原因如下:
using (var ts = new TransactionScope(TransactionScopeOption.Required))
{
数据源1访问数据库
using (var ts1 = new TransactionScope(TransactionScopeOption.Required))
{
数据源2访问数据库
}
}
就是事务中使用嵌套或者在一个事务中访问多个数据源,这个时候就需要打开该服务:Distributed Transaction Coordinator-----------分布式事务协调器