【问题标题】:Should I enable MSDTC in webserver or Database server when using "TransactionScope"?使用“TransactionScope”时,我应该在网络服务器或数据库服务器中启用 MSDTC 吗?
【发布时间】:2011-11-03 13:32:36
【问题描述】:

我的问题与TransactonScope这个话题有关。 我有一个 Web 服务器、一个数据库服务器和一个远程数据库服务器。 我想在本地和远程服务器之间进行分布式事务。我为数据库服务器配置了 MSDTC,我可以在带有链接服务器的数据库服务器中进行分布式事务。 但是当我使用 Transaction scope in system.transactions 命名空间时,当我打开第二个连接(远程连接)时遇到以下错误。

error:
  The transaction has already been implicitly or explicitly committed or aborted.

简化代码:

using (TransactionScope tscope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    //open connection db 1
    //insert into db1

    //open connection db2 (Remote databse) -- the problem is here
    //insert into db2

    tscope.Complete();
}

【问题讨论】:

    标签: c# asp.net sql-server


    【解决方案1】:

    您应该启用它,因为运行时 WHEN NECESSARY 将升级事务以使用分布式事务协调器

    【讨论】:

    • 如何启用它运行时间?请多解释一下
    • 启用 MSDTC 服务,如果您尚未启用它。还要检查您的网络安全设置是否正确设置。查看此链接上的 [在​​ Windows Server 2003 SP1、Windows XP SP2、Windows Server 2008 和 Windows Vista 上设置适当的 MSDTC 安全配置选项] 部分:msdn.microsoft.com/en-us/library/aa561924(v=bts.20).aspx
    • 我是否也应该在我的 Web 服务器上启用 MSDTC?我为本地和远程数据库服务器启用了它?
    • 我可以用 DNS 名称 ping 远程数据库服务器,远程服务器也可以用名称 ping 我的本地数据库服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多