zoukankan      html  css  js  c++  java
  • kbmMW RunInTransaction

    同事写了一个存储过程,用来计算库存表,数据库是sql server,然后利用kbmMWClientStoreProc来调用。因为在存储过程中使用了事务,当库存不足时,Rollback事务并提升级异常,这时候,产生个错误,大意是事务不配对。

    跟踪代码,发现当客户端kbmMWClientStoreProc调用存储过程,转到服务端后,由查询服务(QueryService)来处理,而查询服务又是利用其属性StoreProc指定的对象来执行存储过程,对于我来说,用的是kbmMWuniDACStoreProc控件。

    现在我们把焦点放到kbmMWuniDACStoreProc上,他有一个属性RunInTransaction,默认为True,再查看代码,当为True时,kbmMWuniDACStoreProc执行存储过程时会自动开启事务,发生异常回滚事务,正常执行则提交事务。为False时,则在执行存储过程时,不用事务。

    正因如此,kbmMWuniDACStoreProc开启了事务,而在存储过程中又开启了事务,造成出错了,按理说,事务都是配对的,也不应该出错。用的sql server 2008,可能是这个原因,sqlserver 2008不支持吧,没有进一步查证。

    现在把RunInTransaction设置为False,再执行,问题解决,换一种方法,RunInTransaction依旧为True,在存储过程中去掉了事务,只是提升异常,问题也解决。

    如果在客户端的kbmMWClientStoreProc组件能有个属性来指定是否在服务端开启事务就好了!可惜没有查到。

  • 相关阅读:
    SQL中 patindex函数的用法
    纵表与横表互转的SQL
    几种数据库的大数据批量插入【转】
    使用cmd命令行窗口操作SqlServer
    C#性能优化实践
    C# 图像处理(二)—— 黑白效果
    SQLSERVER系统视图
    SQLServer行列转换 Pivot UnPivot
    C#图片处理常见方法性能比较
    GSM局数据制作1(Erision)
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/14028429.html
Copyright © 2011-2022 走看看