日期:2014-05-19  浏览次数:20873 次

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。”

非常奇怪啊,为什么不能查询然后更新呢?因为对于业务层来说,一个功能并不都是修改、插入和删除,必定也要根据什么条件查询出什么值,然后再根据值再删除什么记录。

请各位网友帮忙查找原因。




------解决方案--------------------
帮顶
------解决方案--------------------
顶~
------解决方案--------------------
吃完饭回来看看哈 ...