TransactionScope的问题请教
TransactionScope应当是微软推荐的轻量级的事务管理器。我也没有找到在.NET环境下使用Adapter和DataSet之外的另一种事务处理模式。TransactionScope实际就是一个隐式事务的作用,毕竟跨越多个数据库的系统比较少。但是很不幸,在本人的使用TransactionScope过程中始终有一个问题存在,特此向各位网友请教。
使用TransactionScope可以实现下列的事务:
using(TransactionScope scope=new TransactionScope())
{
1.更新A表
2.更新B表
scope.Complete();
}
这样能够成功。
哪些MSDTC也配置了,网络也可以互相Ping通。
微软的那个工具Dtcping工具测试结果如下:
++++++++++++++++++++++++++++++++++++++
08-02, 21:35:506--> Log from Test client:
08-02, 21:35:506--> Start DTC connection test with remote host as dbserver
08-02, 21:35:537--> dbserver is resolved to 192.168.68.253
08-02, 21:35:053--> This IP address is back traced to DBSERVER
08-02, 21:35:069--> Invoking RPC method on dbserver
08-02, 21:35:365--> RPC test is successful
08-02, 21:35:381--> Partner 's CID:21EC8D0C-62EB-4EC7-916C-F2B59BE4401B
++++++++++++++++++++++++++++++++++++
08-02, 21:35:381--> Initiating DTC Binding Test....
08-02, 21:35:381--> Test Guid:A3FDC731-0E4C-4CBB-85CE-B2E4A607E551
08-02, 21:35:381--> Trying Bind to dbserver
08-02, 21:35:444--> Binding call to dbserver Failed
08-02, 21:35:444--> In GUID:A3FDC731-0E4C-4CBB-85CE-B2E4A607E551
08-02, 21:35:444--> Out GUID:00000000-0000-0000-0000-000000000000
08-02, 21:35:459--> Trying Bind to dbserver
也就是还是有问题。奇怪的是,为什么TransactionScope 还能够使用的?
然后在下列一种情况中就出现了一个错误:
using(TransactionScope scope=new TransactionScope())
{
1.查询A表
2.更新B表
scope.Complete();
}
这个异常是“与基础事务管理器的通信失败。”,内部异常信息为:“对 COM 组件的调用返回了错误 HRESULT E_FAIL。”
非常奇怪啊,为什么不能查询然后更新呢?因为对于业务层来说,一个功能并不都是修改、插入和删除,必定也要根据什么条件查询出什么值,然后再根据值再删除什么记录。
请各位网友帮忙查找原因。
------解决方案--------------------帮顶
------解决方案--------------------顶~
------解决方案--------------------吃完饭回来看看哈 ...