.net - MSDTC促进交易分布式的可靠测试吗?

标签 .net sql-server-2008 transactions msdtc distributed-transactions

如何可靠地检查MSDTC是否已将事务提升为分布式事务?

这是在.net中使用TransactionScope时的情况。

当前,一位同事正在通过关闭计算机上的协调器来进行测试-如果引发异常,则将其视为试图促进交易的证据。这是有效的测试吗?

最佳答案

我认为您的测试还可以,尽管您应该确保获得DTC异常而不是其他异常。

您可以做的其他一些事情:

  • 您还可以在事务跟踪DTCTransaction下运行SQL Profiler。
  • 就代码而言,您可以处理DistributedTransactionStarted事件并在启动分布式事务时记录一条消息。
  • 或者您可以只添加日志消息以在事务结束之前记录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,则应该能够在同一事务中打开到同一数据库的多个连接(使用相同的连接字符串),而无需升级为分布式事务。为此,您需要在打开第二个连接之前先关闭第一个连接。

    如果看起来所有条件都已满足并且交易仍在升级,我将:
  • 再次检查SQL Server兼容性级别
  • 检查连接字符串以查看是否禁用了池化
  • 检查一次事务中是否未同时打开两个连接
  • 找出是否所有交易都被升级,或者仅在某些情况下

  • 更新: Distributed Transaction Coordinator(MSDTC) and Transaction FAQ汇集了大量MSDTC资源。

    关于.net - MSDTC促进交易分布式的可靠测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456333/

    相关文章:

    php - 如何在同一事务中保存和删除

    c# - 对于两个列表中的每个元素

    .net - 命名主程序集 (.exe) 以避免长文件名 : Company. Product.Application.exe

    sql - SQL Server 2008 中表格结果的分组和计数选择

    sql-server - 在 TSQL 中重新创建 SSRS 数据源以进行测试

    c# - TransactionScope 真正做什么

    java - 使用 Deuce STM 进行队列

    .net - 随着摩尔定律的通过,您是否认为可能会从框架转移?

    java - 我们可以使用 Java selenium 代码进行 .net Web 应用程序测试吗?

    sql - 如何从按不同项目分组的结果集中计算最大(列)行