.net 无MSDTC-仍在获取;与基础事务管理器的通信失败”;

.net 无MSDTC-仍在获取;与基础事务管理器的通信失败”;,.net,sql-server,ado.net,transactions,msdtc,.net,Sql Server,Ado.net,Transactions,Msdtc,在我的项目中,我使用Ado.Net的DbTransaction对象来管理事务。。。那么我为什么会收到MSDTC相关错误-“与底层事务管理器的通信失败” 这是我的密码 DbTransaction trans = Connection.BeginTransaction(); //Code if (successfull) { trans.Commit(); } else { trans.RollBack(); } 不幸的是,MSDTC真的很难建立。然而,一旦你让它运行起来,它就

在我的项目中,我使用Ado.Net的DbTransaction对象来管理事务。。。那么我为什么会收到MSDTC相关错误-“与底层事务管理器的通信失败”

这是我的密码

DbTransaction trans = Connection.BeginTransaction();

//Code

if (successfull)
{
    trans.Commit();
}
else
{
    trans.RollBack();
}

不幸的是,MSDTC真的很难建立。然而,一旦你让它运行起来,它就会运行得很好。问题只是因为每个人的网络设置都有一点不同

听起来您的MSDTC服务可能没有在您的客户机上启用,或者可能没有在您的服务器上启用

以下是在Windows 7上启用它的指南:-->

您还需要在DB服务器上启用它:-->

一种简单的测试方法是,在dev机器上设置两个不同的本地数据库,而无需联系服务器管理员。然后尝试跨两个数据库连接维护事务。假设您正确配置了msdtc,那么一切都会正常工作

最后一点是,您可以通过参考System.Transactions库并使用如下事务代码,让您的生活变得更轻松:

using (TransactionScope scope = new TransactionScope())
{
    /* Perform transactional work here */
    SomeMethod();
    scope.Complete();
}

请注意,不需要显式回滚。如果using语句中有任何内容崩溃,或者在点击.Complete();)之前退出using语句;,您的事务将回滚。有关TransactionScope的更多信息,请参见此处:-->

不幸的是,MSDTC确实是一个需要设置的负担。然而,一旦你让它运行起来,它就会运行得很好。问题只是因为每个人的网络设置都有一点不同

听起来您的MSDTC服务可能没有在您的客户机上启用,或者可能没有在您的服务器上启用

以下是在Windows 7上启用它的指南:-->

您还需要在DB服务器上启用它:-->

一种简单的测试方法是,在dev机器上设置两个不同的本地数据库,而无需联系服务器管理员。然后尝试跨两个数据库连接维护事务。假设您正确配置了msdtc,那么一切都会正常工作

最后一点是,您可以通过参考System.Transactions库并使用如下事务代码,让您的生活变得更轻松:

using (TransactionScope scope = new TransactionScope())
{
    /* Perform transactional work here */
    SomeMethod();
    scope.Complete();
}

请注意,不需要显式回滚。如果using语句中有任何内容崩溃,或者在点击.Complete();)之前退出using语句;,您的事务将回滚。有关TransactionScope的更多信息,请参见此处:-->

您确实需要msdtc吗?您在一个事务中与多少个数据库服务器交互?您确实需要msdtc吗?您在一个事务中与多少个数据库服务器交互?