MSDTC ERROR 将应用程序和数据库分离到不同的服务器后

Posted

技术标签:

【中文标题】MSDTC ERROR 将应用程序和数据库分离到不同的服务器后【英文标题】:MSDTC ERROR After separating application and database to different servers 【发布时间】:2016-11-01 07:57:38 【问题描述】:

我有一个 dot net 应用程序,它最初与它的数据库托管在同一个盒子中,在将两者分开到不同的盒子后,我不断收到 MSDTC 错误

这是错误日志

与底层事务管理器的通信失败。在 System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[]propagationToken) 在 System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx) 在 System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx) 在 System.Transactions.EnlistableStates.Promote(InternalTransaction tx)在 System.Transactions.Transaction.Promote() 在 System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) 在 System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] 行踪) 在 System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(事务 tx) 在 System.Data.SqlClient.SqlInternalConnection.EnlistTransaction(事务事务) 在 System.Data.SqlClient.SqlConnection.EnlistTransaction(事务事务) 在 System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser 用户) 在系统。 Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()在 System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() 在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式查询) 在 System.Data.Linq.DataQuery@987654323 @1 来源)

两台机器上的 MSDTC 设置

我还在两个防火墙中打开了端口 135 和端口 5000 到 50020。

请帮助我的可能是什么问题。

【问题讨论】:

您是否尝试过退后一步,即您的应用程序是否仍然可以执行与数据库的基本连接并执行简单的读取以返回一些记录? 【参考方案1】:
    This solved my issue 

我在两个服务器中编辑了下面的文件,将它们的 IPS 和分配名称添加到机器我能够使用分配的名称相互 ping 两台机器,然后将配置文件数据源更改为名称而不是使用 ips

这是我编辑的确切行 xxx.16.100.1 JpAppServer # x 客户端主机

    C:\Windows\System32\Drivers\etc

    # Copyright (c) 1993-2009 Microsoft Corp.
    #
    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
    #
    # This file contains the mappings of IP addresses to host names. Each
    # entry should be kept on an individual line. The IP address should
    # be placed in the first column followed by the corresponding host name.
    # The IP address and the host name should be separated by at least one
    # space.
    #
    # Additionally, comments (such as these) may be inserted on individual
    # lines or following the machine name denoted by a '#' symbol.
    #
    # For example:
    #
    #      102.54.94.97     rhino.acme.com          # source server
           xxx.16.100.1     JpAppServer              # x client host

    # localhost name resolution is handled within DNS itself.
    #   127.0.0.1       localhost
    #   ::1             localhost

【讨论】:

以上是关于MSDTC ERROR 将应用程序和数据库分离到不同的服务器后的主要内容,如果未能解决你的问题,请参考以下文章

分离 UITableViewDelegate 和 UITableViewDataSource 导致没有数据显示

Always On 可用性组中的 MSDTC

MSDTC故障排除

MSDTC 通信通过 *** 失败

Azure 无法将事务编组为弹性事务的传播令牌(适用于 MSDTC)

MSDTC不可用解决办法