如何可靠地检查MSDTC是否已将事务提升为分布式事务?
这是在.net中使用TransactionScope时的情况。
当前,一位同事正在通过关闭计算机上的协调器来进行测试-如果引发异常,则将其视为试图促进交易的证据。这是有效的测试吗?
最佳答案
我认为您的测试还可以,尽管您应该确保获得DTC异常而不是其他异常。
您可以做的其他一些事情:
System.Transactions.Transaction.Current.
TransactionInformation.DistributedIdentifier
。如果值为Guid.Empty {00000000-0000-0000-0000-000000000000},则它不是分布式事务,否则该事务已提升为分布式事务。 您说您正在使用SQL Server2008。您正在使用什么版本的.NET?是3.5吗?如果使用SQL Server 2008 and .NET 3.5,则应该能够在同一事务中打开到同一数据库的多个连接(使用相同的连接字符串),而无需升级为分布式事务。为此,您需要在打开第二个连接之前先关闭第一个连接。
如果看起来所有条件都已满足并且交易仍在升级,我将:
更新: Distributed Transaction Coordinator(MSDTC) and Transaction FAQ汇集了大量MSDTC资源。
关于.net - MSDTC促进交易分布式的可靠测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456333/