问题原因:
http://support.microsoft.com/kb/317375/zh-cn
http://www.diybl.com/course/7_databases/sql/sqlServer/20100702/314003.html
http://www.iteye.com/topic/8850
http://msdn.microsoft.com/zh-cn/ms345414(v=SQL.90)
微软的MSDN是一个解决Windows问题的好地方
解决办法:
http://topic.csdn.net/t/20050323/12/3873954.html
综上原因我们可以得到如下结论:
1、程序中有未提交的事务
2、当声明式事务出现异常时,没有显示的回滚
3、有大的事务在运行
4、线程池中存在没有关闭的事务
通过以上分析,我们可以联系到代码规范,如果你没有使用诸如Spring的框架来帮助你控制事务,而是显示的管理事务,
就需要保证,当事务出现异常时一定要显示回滚。
在各个线程间要保证不要出现嵌套的事务调用,如果有一定要考虑,嵌套的处理出现异常时事务回滚
事务的执行时间不要太长,但是为了保证事务的完整性,我们可能会出现在一个事务中做很多的操作
但是大多数情况下我们执行时间对计算机来说还是很短的。如果有类似消耗性能的算法一定不要放到事务中处理,
我们可以先计算完毕然后在事务中使用。
这就是为什么代码规范强调,事务要回滚。
这么想来知识是相互联系的,它是由于某个知识的需要而诞生了其它知识的产生。创新来源于此,遇到问题解决
问题,并因为解决问题而产生新的知识。