这个问题,一般是由于在事务中,事务出现错误被CATCH到以后,在CATCH部分处理时,并没有及时回滚事务 而是在之前,又进行其他的操作,导致隐式事务提交和显式事务不能提交的冲突,从而抛出这样的错误信息.你可以写一个存储过程,然后再使用try...catch 和XACT_STATE
关键我就一条删除内存优化表的sql呢,没有任何其它语句,就一个drop table,没涉及事务啊
解决方法如下:查看SQL代码,找出错误原因。
sql 就一句话 drop table P_Projects.
异常全部内容如下:
The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.
@刘志勇: 有人在操作这个数据表,要么你把服务器先断开?
@爱编程的大叔: 有强制的方法吗,不能断开服务器,很多内存表,一断开会影响很大。
@刘志勇: 那你就别删除这个表啊,不是有人在用吗?
你要删除这个表,得解决有人用这件事的。
@爱编程的大叔: 这可难喽,关键我里面的数据都清空了,不太可能有人一直会用着呢。
如果表在插入、更新或删除之后以及事务提交之前被删除,则也可能会发生此错误。 这仅适用于本机编译存储过程中的插入、更新或删除操作。 通过解释的 Transact-SQL 执行的这类写操作会导致 DROP TABLE 语句阻塞并等待事务提交。
摘录自:http://msdn.microsoft.com/zh-cn/library/dn133169.aspx
有什么好的方法么
@刘志勇: 你删表的时候,这个表是不是正在被其他地方使用啊?
@幻天芒: 没有,解决了,把内存表的容量设置大一些就好了。谢谢。
@刘志勇: 学习了,没用过内存表,又积累经验了,哈哈~