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

关于锁堵塞~~
产生堵塞的语句如下:
Select   Count   (   *)   from   HT   Where   SAuditingID   = 'ljz '   and  
AuditingDate   is   Null   and   SubMitDate   is   not   null  

——由于程序源代码无法更改,目前我想解决的是做一个程序,自动去

1、查找到所有“正在堵塞”的进程
2、分析SQL是否是该语句
3、删除该进程

请各位可以说说为何造成堵塞——不要直接把邹老大的存储过程给我,谢谢~~

------解决方案--------------------
相关字段有没有索引

表的数据量大概多少

加索引(SAuditingID,AuditingDate,SubMitDate)先试试

kill进程的想法往往是不可取的


------解决方案--------------------
是每次都这样?
那就SQL有问题.

如果是偶尔这样,那可能是库或程序使用的记录的查看方法.如某人正在更改记录,锁住表,你查询就会很慢了.
------解决方案--------------------
Select Count ( *) from HT Where SAuditingID = 'ljz ' and
AuditingDate is Null and SubMitDate is not null

把这句话放到查询分析器里面运行一下,看看情况.
------解决方案--------------------
Select Count ( *) from HT with (nolock) Where SAuditingID = 'ljz ' and
isnull(AuditingDate, ' ')= ' ' and isnull(SubMitDate, ' ') <> ' '

這樣看看,
------解决方案--------------------
1、打开Sql Profile
2、运行程序
3、用sp_lock 找到看看有哪些进程处于wait状态,找到他的spid
4、然后找Sql Profile中看看相应的spid线程执行了哪些语句,最后一个Sql语句应该就是引起阻塞的语句。

-----------------
不知以上方法是否可行,lz可以试试看。
------解决方案--------------------
至于删除进程,应该比较容易,kill就可以了。