SQL Server进程阻塞的检查和解决办法

上传人:m**** 文档编号:148497428 上传时间:2022-09-05 格式:DOCX 页数:3 大小:10.08KB
收藏 版权申诉 举报 下载
SQL Server进程阻塞的检查和解决办法_第1页
第1页 / 共3页
SQL Server进程阻塞的检查和解决办法_第2页
第2页 / 共3页
SQL Server进程阻塞的检查和解决办法_第3页
第3页 / 共3页
资源描述:

《SQL Server进程阻塞的检查和解决办法》由会员分享,可在线阅读,更多相关《SQL Server进程阻塞的检查和解决办法(3页珍藏版)》请在装配图网上搜索。

1、create procedure sp_who_lock as begin declare spid int,bl int, intTransactionCountOnEntry int, intRowcount int, intCountProperties int, intCounter int create table #tmp_lock_who ( id int identity(1,1), spid smallint, bl smallint)IF ERROR0 RETURN ERROR insert into #tmp_lock_who(spid,bl) select 0 ,blo

2、cked from (select * from sysprocesses where blocked0 ) a where not exists(select * from (select * from sysprocesses where blocked0 ) b where a.blocked=spid)union select spid,blocked from sysprocesses where blocked0IF ERROR0 RETURN ERROR- 找到临时表的记录数select intCountProperties = Count(*),intCounter = 1 f

3、rom #tmp_lock_whoIF ERROR0 RETURN ERROR if intCountProperties=0 select 现在没有阻塞信息 as message- 循环开始while intCounter = intCountProperties begin- 取第一条记录 select spid = spid,bl = bl from #tmp_lock_who where Id = intCounter beginif spid =0select 引起数据库阻塞的是:+ CAST(bl AS VARCHAR(IO) + 进程号,其执行的SQL 语法如下elseselec

4、t 进程号 SPID:+ CAST(spid AS VARCHAR(10)+ 被 + 进程号 SPID:+ CAST(bl AS VARCHAR(IO) +阻塞,其当前进程执行的SQL语法如下DBCC INPUTBUFFER (bl ) end- 循环指针下移set intCounter = intCounter + 1end drop table #tmp_lock_whoreturn 0endGO-结束 SQL 阻塞的进程% create procedure sp_Kill_lockProcessasbeginSET NOCOUNT ONdeclare spid int,bl int,in

5、tTransactionCountOnEntry int,intRowcount int,intCountProperties int,intCounter int,sSql nvarchar (200)create table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)IF ERROR0 RETURN ERRORinsert into #tmp_lock_who(spid,bl)select 0 ,blockedfrom(select * from sysprocesses where blocked0 ) a

6、where not exists(select * from (select * from sysprocesses where blocked0 ) bwhere a.blocked=spid)union select spid,blocked from sysprocesses where blocked0IF ERROR0 RETURN ERROR- 找到临时表的记录数select intCountProperties = Count(*),intCounter = 1from #tmp_lock_whoIF ERROR0 RETURN ERRORwhile intCounter = i

7、ntCountPropertiesbegin- 取第一条记录select spid = spid,bl = blfrom #tmp_lock_who where Id = intCounterbeginif spid =0beginset sSql=kill + CAST(bl AS VARCHAR(10)exec sp_executesql sSqlendend- 循环指针下移set intCounter = intCounter + 1enddrop table #tmp_lock_whoSET NOCOUNT OFFreturn 0endGO 查看锁信息如何查看系统中所有锁的详细信息?在

8、企业管理管理器中,我们可以看到一些进程和锁 的信息,这里介绍另外一种方法。-查看锁信息create table #t(req_spid int,obj_name sysname)declare s nvarchar(4000),rid int,dbname sysname,id int,objname sysname declare tb cursor forselect distinct req_spid,dbname=db_name(rsc_dbid),rsc_objidfrom master.syslockinfo where rsc_type in(4,5)open tbfetch n

9、ext from tb into rid,dbname,idwhile fetch_status=0beginset s=select objname=name from +dbname+.sysobjects whereid=id exec sp_executesql s,Nobjname sysname out,id int,objname out,id insert into #t values(rid,objname)fetch next from tb into rid,dbname,idendclose tb deallocate tb select 进程 id=a.req_spi

10、d,数据库=db_name(rsc_dbid),类型=case rsc_type when 1 then NULL 资源(未使用)when 2 then 数据库when 3 then 文件when 4 then 索引when 5 then 表when 6 then 页when 7 then 键when 8 then 扩展盘区when 9 then RID(行 ID)when 10 then 应用程序end,对象 id=rsc_objid,对象名=b.obj_name,rsc_indidfrom master.syslockinfo a left join #t b on a.req_spid=b.req_spid godrop table #t

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!