首页 新闻 会员 周边 捐助

The current transaction cannot be committed and cannot support operations that write to the log file

0
悬赏园豆:40 [已解决问题] 解决于 2014-12-16 16:25

服务器执行删除Drop table 内存优化表 时候

出现The current transaction cannot be committed and cannot support operations that write to the log file

异常。

 

应该如何解决呢?谢谢

刘志勇的主页 刘志勇 | 菜鸟二级 | 园豆:261
提问于:2014-12-16 12:31
< >
分享
最佳答案
0

这个问题,一般是由于在事务中,事务出现错误被CATCH到以后,在CATCH部分处理时,并没有及时回滚事务  而是在之前,又进行其他的操作,导致隐式事务提交和显式事务不能提交的冲突,从而抛出这样的错误信息.你可以写一个存储过程,然后再使用try...catch 和XACT_STATE

收获园豆:15
Mr.Brian | 小虾三级 |园豆:1518 | 2014-12-16 13:10

关键我就一条删除内存优化表的sql呢,没有任何其它语句,就一个drop table,没涉及事务啊

刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 15:10
其他回答(2)
0

解决方法如下:查看SQL代码,找出错误原因。

收获园豆:10
爱编程的大叔 | 园豆:30844 (高人七级) | 2014-12-16 12:47

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.

支持(0) 反对(0) 刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 12:49

@刘志勇: 有人在操作这个数据表,要么你把服务器先断开?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-12-16 15:42

@爱编程的大叔: 有强制的方法吗,不能断开服务器,很多内存表,一断开会影响很大。

支持(0) 反对(0) 刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 15:45

@刘志勇: 那你就别删除这个表啊,不是有人在用吗?

你要删除这个表,得解决有人用这件事的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-12-16 15:48

@爱编程的大叔: 这可难喽,关键我里面的数据都清空了,不太可能有人一直会用着呢。

支持(0) 反对(0) 刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 15:49
0

如果表在插入、更新或删除之后以及事务提交之前被删除,则也可能会发生此错误。 这仅适用于本机编译存储过程中的插入、更新或删除操作。 通过解释的 Transact-SQL 执行的这类写操作会导致 DROP TABLE 语句阻塞并等待事务提交。

 

摘录自:http://msdn.microsoft.com/zh-cn/library/dn133169.aspx

收获园豆:15
幻天芒 | 园豆:37207 (高人七级) | 2014-12-16 13:36

有什么好的方法么

支持(0) 反对(0) 刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 15:11

@刘志勇: 你删表的时候,这个表是不是正在被其他地方使用啊?

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-12-16 16:23

@幻天芒: 没有,解决了,把内存表的容量设置大一些就好了。谢谢。

支持(0) 反对(0) 刘志勇 | 园豆:261 (菜鸟二级) | 2014-12-16 16:24

@刘志勇: 学习了,没用过内存表,又积累经验了,哈哈~

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-12-16 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册