在某些机器上,TransactionScope自动升级到MSDTC?在我们的项目中,我们使用TransactionScope来确保数据访问层在事务中执行它的操作。我们的目标是不要求在我们最终用户的机器上启用MSDTC服务.问题是,在我们一半的开发人员机器上,我们可以在禁用MSDTC的情况下运行。另一半必须启用它,否则他们将获得“[server]上的MSDTC不可用”错误信息。这真的让我绞尽脑汁,让我认真考虑回到一个基于ADO.NET事务对象的类似于TransactionScope的家用解决方案。这看起来很疯狂-同样的代码在我们的开发人员的一半上工作(而且不会升级)是吗?在另一个开发商那里升级。我希望能有更好的答案跟踪事务升级到dtc的原因。但不幸的是,事实并非如此。下面是一段会导致故障的代码示例,在试图升级的机器上,它尝试在第二个连接上升级。Open()(是的,当时没有其他连接打开)。using (TransactionScope transactionScope = new TransactionScope() {
using (SqlConnection connection = new SqlConnection(_ConStr)) {
using (SqlCommand command = connection.CreateCommand()) {
// prep the command
connection.Open();
using (SqlDataReader reader = command.ExecuteReader()) {
// use the reader
connection.Close();
}
}
}
// Do other stuff here that may or may not involve enlisting
// in the ambient transaction
using (SqlConnection connection = new SqlConnection(_ConStr)) {
using (SqlCommand command = connection.CreateCommand()) {
// prep the command
connection.Open(); // Throws "MSDTC on [SERVER] is unavailable" on some...
// gets here on only half of the developer machines.
}
connection.Close();
}
transactionScope.Complete();}我们一直在努力想办法解决这个问题。下面是它工作的机器的一些信息:开发1:Windows 7 x64 SQL 2008开发2:Windows 7 x86 SQL 2008开发3:Windows 7 x64SQL 2005 SQL 2008它不工作的开发人员:开发4:Windows 7 x64,SQL 2008 SQL 2005开发5:WindowsVista x86,SQL 2005开发6:Windows XP X86,SQL 2005My Home PC:WindowsVista家庭高级版,x86,SQL 2005我要补充的是,为了寻找问题,所有机器都已经完全修补了MicrosoftUpdate提供的所有内容。
3 回答
不负相思意
TA贡献1777条经验 获得超10个赞
SQLConnection
TransactionScope
- 3 回答
- 0 关注
- 534 浏览
添加回答
举报
0/150
提交
取消