今天我的一个同学在外地出差,碰到了这样的状况:
他的程序(VB.NET开发的ASP.NET应用程序)已经部署到服务器上了,MSSQL2000已经安装过了,其他配置都是好了,服务器操作系统的2003 server,这个网站已经稳定运行了达半年之久,运行的比较稳定,今天他去部署新的版本(较上一版本增加了几个模块),操作数据库老是会报异常。后来干脆断开程序,单纯的从查询分析器操作,不可思议的现象出来了:每次对数据库中的某张用户表执行插入、修改、删除操作的时候,当时执行的时候在查询分析器中看不到任何异常,可是当我要关闭查询分析器的时候,弹出类似“有事务未提交成功”的消息,我直接关掉,然后重新启动服务器,再打开查询分析器,发现刚才做的那些操作都没效果了,没有见过这样的现象,希望大家帮我分析下!
我现在让他吧服务器上的程序和数据库移植到他的机子上,让他重复我的操作,看看会怎样?

解决方案 »

  1.   

    弹出类似“有事务未提交成功”的消息>>
    表示还有事物未提交,看看你的SQL 是不是有BEGIN TRAN而没有COMMIT TRAN与之对应。如果你语句没有写BEGIN TRAN,那么检查一下你操作的表上是否有Trigger.
      

  2.   

    查出所有触发器,存储过程,在begin刚开始时加上 
    set nocount on否则通过程序调用时,后果不堪设想
      

  3.   

    执行 dbcc useroptions 语句检查一下是否打开了“隐式事务”(implicit_transactions SET)。如果是,检查一下“查询分析器”的配置。在会话中,可以用 set implicit_transactions off 语句关闭。