SQLSERVER 数据库死锁的解决方案!
sp_who
kill spid
SQLSERVER出现死锁的一个常见情况是:
SQLSERVER2000创建一个数据库的数据库文件和日志文件的增长规则是按10%增长。假设数据库文件的容量积累到100GB,则下次数据库扩容时是按10%一次性扩大文件空间,也就是一次性要扩大10GB的空间。一次扩容10GB,将使硬盘严重负载,至少需要几秒钟的时机,而此时如果客户端正频繁访问数据库,将无法获得数据库响应,提示文件存储空间不足(此时正在扩容)。此时就是容易产生死锁的情况了,一旦死锁,SQLSERVER2000将进入卡死状态,即使经过几秒后,文件已经扩容,它还是死的。这种情况在SQLERVER2005有了改进,应该是不会死了。
其实这是微软的SQLSERVER默认设置值造成的,也就是说你安装SQLSERVER2000后,不修改这个默认值,如果你的系统数据量很大,而且有频繁操作的时间段,那么总有一天你的系统会出现这个死锁的现象,难以避免!幸好在SQLSERVER2005已经修改这个默认设置。
SQLSEVER2005也增加了一个内部安全通道,即使数据库进入卡死状态,也可以通过这个安全通道进行kill spid操作!