日期:2014-05-18  浏览次数:20560 次

程序录入不了数据
首先肯定是数据库问题,以前一直运行良好的程序,
最近总出现录入不了数据现象,于是查看数据库中
是否有死锁,无论是用网上流行的几种查看死锁的
存储过程还是在企业管理器中都看不出来死锁,
而用户当执行到那个存储过程的时候就会停止不动,
直至超时,存储过程无非是从一个表里取最大值,
有好几个这样的存储过程都是这样,他们也不是从一个
表中取的数据。这种现象偶尔就会出现,过了大概半小时
就会自动好转,不得其解。
难道会是因为数据库日志大吗,因为硬盘地方够,
日志一直没有清理,现在日志有200多G,会因为这个,
而锁柱某个表吗?而我查看是没有锁和阻塞信息的,
在企业管理器中查看锁/对象,有这样的信息,
master.dbo.spt_values,tempdb.dbo.##lockinfo,
当然也有被锁的数据库名字,
求大牛给指点

------解决方案--------------------
收缩或者清理下日志,200G也够大的。
------解决方案--------------------
应该是并发,死锁了。
------解决方案--------------------
这种现象,明显是阻塞了

你这样修改下,在你求最大值的存储过程语句,比如原来是
SQL code
select max(id) as maxid from tab

------解决方案--------------------
新建一个最大值ID表,专门存放表中字段的最大ID,程序从最大值ID表中读取ID并加1
如:
cTbName iMaxId
aa 100001
bb 999
cc 1599