不要滥用“显式事务”,其实在一般的系统中,需要用到“显式事务”的地方很少,基本上sqlserver默认的事务机制是可以满足的,在大多数情况下默认的就是最优的。

解决方案 »

  1.   

    在update和delete为求数据一致性才用事务事务会对所用的对象加琐,不利于多用户操作
      

  2.   

    主要是在保持一致性的时候用,其他的时候一般都用sql默认的就行了,呵呵~~~
      

  3.   

    1、事务尽可能少用
    2、尽可能小
    3、立即COMMIT或ROLLBACK
      

  4.   

    tj_dns(愉快的登山者) :
    只有在进行相关联数据写入或修改删除时,使用事务。
    主要的目的是要保证数据一致性。
    要尽量将不相干的处理放在事务之外;
    一个事务过程要紧凑,处理完毕立即提交。回复:
    有的用户要求必须将“打印”与“事务”关联起来,例如:只有单据成功打印后,前面所做的新增(或更新,删除操作)才能有效。这样使其他用户的操作经常被锁定,令人非常恼火。
      

  5.   

    To: pengdali(大力 V2.0) 
        什么是“显式事务”,麻烦解释一下,不好意思。
     
    To: caiyunxia(monkey) 
    有的客户非常刁蛮,对打印单据控制得非常严格,如果单据没有成功打印,前面所做的操作(有数十条SQL更新操作,要同时更新8张数据表)必须由系统自动取消,所以只能使用“事务”。另外,由于同时有30多个用户在同时进行单据的录入操作,每一笔数据录入后,要相关执行其它的许多关联更新操作,并且上一步的单据录入数据必须作为下一步的单据录入依据,一环扣一环,因此用户的并发冲突非常严重,经常发生数据锁定,速度也极慢。
      

  6.   

    显式事务
    显式事务可以显式地在其中定义事务的启动和结束。在 Microsoft® SQL Server™ 的早期版本中,显式事务也称为用户定义或用户指定的事务。DB-Library 应用程序和 Transact-SQL 脚本使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK Transact-SQL 语句定义显式事务。BEGIN TRANSACTION为连接标记显式事务的起始点。COMMIT TRANSACTION 或 COMMIT WORK如果没有遇到错误,可使用该语句成功地结束事务。该事务中的所有数据修改在数据库中都将永久有效。事务占用的资源将被释放。ROLLBACK TRANSACTION 或 ROLLBACK WORK用来清除遇到错误的事务。该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。还可以在 OLE DB 中使用显式事务。调用 ITransactionLocal::StartTransaction 方法可启动事务。将 fRetaining 设置为 FALSE,则调用 ITransaction::Commit 或 ITransaction::Abort 方法结束事务时,不会自动启动另一事务。在 ADO 中,对 Connection 对象使用 BeginTrans 方法可启动隐性事务。若要结束该事务,可调用该 Connection 对象的 CommitTrans 或 RollbackTrans 方法。ODBC API 不支持显式事务,只支持自动提交和隐性事务。显式事务模式持续的时间只限于该事务的持续期。当事务结束时,连接将返回到启动显式事务前所处的事务模式,或者是隐性模式,或者是自动提交模式。
      

  7.   

    谢谢CrazyFor(上苍保佑吃完了饭的人民) 的解释,我一般是使用ADODB.Connection的事务,应该是你所说的“隐性事务”。另外,请大家来继续讨论如何最大程度的减少“事务”对MIS系统性能的影响。
      

  8.   

    Begin2008(重头再来) : ADO的默认事务是自动事务,而不是隐性事务。
      

  9.   

    谢谢formine(火花) 的建议,我会对程序做一个适当改进。另外,由于同时有30多个用户在同时进行单据的录入操作,每一笔数据录入后,要相关执行其它的许多关联更新操作,并且上一步的单据录入数据必须作为下一步的单据录入依据,一环扣一环,因此用户的并发冲突非常严重,经常发生数据锁定,速度也极慢。这个问题让我万分的痛苦。
      

  10.   

    想找小姐吗,来水园吧!
    这里有老龟奴zyq_123雍亲正当大版主,还有人称辣花摧魔前青楼名妓smoke当镇小版主,肯定能满足您的需要!!!快来吧~~~~~~