日期:2014-05-17  浏览次数:20664 次

一个奇怪的问题,数据库过一段时间就不能进行增,删,改操作,只能读取!!!
用的SQL SERVER2000数据库,网站运行一段时间后,就只能读取,不能进行任何增加,删除,修改操作了,重启数据库后能能正常一段时间。
初步怀疑是网站有程序没有关闭连接,但是因为是别人的老网站,程序是.NET发布过的,没有后台程序代码,无从改起。有没有什么办法让数据库连接快满的时候自动释放所有连接呢?

------解决方案--------------------
如果进行增删改 会有什么提示 或者错误?
------解决方案--------------------
1:用户,只给了reader权限,没有给writer,每次还原,不小心漏点有可能
2:连接串被变更了。
3:DB,数据库可能被切换成了stand by模式。
以上都有可能,既然能查询,不能变更。说明网络没问题,先看下这3方面。
------解决方案--------------------
引用:
用的SQL SERVER2000数据库,网站运行一段时间后,就只能读取,不能进行任何增加,删除,修改操作了,重启数据库后能能正常一段时间。
初步怀疑是网站有程序没有关闭连接,但是因为是别人的老网站,程序是.NET发布过的,没有后台程序代码,无从改起。有没有什么办法让数据库连接快满的时候自动释放所有连接呢?



根据lz的描述,从重启后可以坚持一段时间上判断,可能是tempdb的问题。lz检查一下看看tempdb的大小变化。

优化tempdb 参考http://msdn.microsoft.com/zh-cn/library/ms175527(v=sql.105).aspx
------解决方案--------------------
如果你的程序使用了事务也可能出现这种情况,比如一种耦合性的代码发生:
如:
trans1:
操作A表;
操作B表
end trans

trans2
操作B表;
操作A表
endtrans
可以查一查

------解决方案--------------------
我的第一反应是日志满了。。
但是怎么解释重启之后能用一阵??
------解决方案--------------------
执行DML语句会报什么错误?可以查询数据库的状态?standy by?read/write?