SQL Server 查看死锁的存储过程(转载)

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[sp_who_lock]‘) and 

OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
drop procedure [dbo].[sp_who_lock]
GO

use master
go
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 @@ERROR<>0 RETURN @@ERROR

        insert into #tmp_lock_who(spid,bl) select 0 ,blocked
          from (select * from sysprocesses where blocked>0 ) a
          where not exists(select * from (select * from sysprocesses where blocked>0 ) b
          where a.blocked=spid)
          union select spid,blocked from sysprocesses where blocked>0

        IF @@ERROR<>0 RETURN @@ERROR 

-- 找到临时表的记录数
        select @intCountProperties = Count(*),@intCounter = 1
        from #tmp_lock_who

        IF @@ERROR<>0 RETURN @@ERROR 

        if @intCountProperties=0
            select ‘现在没有阻塞和死锁信息‘ as message

-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录
        select @spid = spid,@bl = bl
        from #tmp_lock_who where Id = @intCounter
        begin
            if @spid =0
                select ‘引起数据库死锁的是: ‘+ CAST(@bl AS VARCHAR(10)) + ‘进程号,其执行的

SQL语法如下‘
            else
                select ‘进程号SPID:‘+ CAST(@spid AS VARCHAR(10))+ ‘被‘ + ‘进程号SPID:‘+ 

CAST(@bl AS VARCHAR(10)) +‘阻塞,其当前进程执行的SQL语法如下‘
            DBCC INPUTBUFFER (@bl )
            end 

-- 循环指针下移
        set @intCounter = @intCounter + 1
end

drop table #tmp_lock_who

return 0
end
时间: 2024-10-12 12:30:00

SQL Server 查看死锁的存储过程(转载)的相关文章

sql server查看有哪些存储过程和视图的方法

select * from sys.sysobjects where type='p'  //存储过程 select * from sys.sysobjects where type='v'  //视图 sp_helptext procName //查看存储过程结构 sp_helptext vwName //查看视图结构

Sql Server 查看所有存储过程或视图的位置及内容

原文:Sql Server 查看所有存储过程或视图的位置及内容 select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF') order by a.[name] asc 通过这个sql语句可以查到sql server中的视图和存储过程

处理sql server的死锁 [kill spid]

出现死锁的解决办法 在master中创建查看死锁的存储过程 [sql] view plaincopy use master go create procedure sp_who_lock as begin declare @spid int,@bl int, @intTransactionCountOnEntry  int, @intRowcount    int, @intCountProperties   int, @intCounter    int create table #tmp_l

SQL server下死锁问题

这几天在做一个项目,以前都没怎么搞过多线程,现在开始,只有边学边做了. 一开始的时候,程序报错是,是提示发生死锁,刚开始,自己没什么经验,以为是程序代码的死锁,就用lock代码,把程序给锁起来了,运行程序后,发现有超时现象,查阅资料,后来断定,这个问题是死锁是发生是SQL server上的,特地找了下SQL2008的书,看了下,死锁的解释. 共享锁 排他锁 更新锁 自定义锁 然后查了资料, 查询SQL死锁的 存储过程 create procedure sp_who_lock   as   beg

sql server 查看对象最后修改时间

sql server 查看对象最后修改时间,根据最后修改时间排序 存储过程 SELECT * FROM sys.all_objects WHERE  TYPE='P' ORDER BY modify_date DESC; 视图 SELECT * FROM sys.all_objects WHERE  TYPE='v' ORDER BY modify_date DESC; 表 SELECT * FROM sys.all_objects WHERE  TYPE='u' ORDER BY modify

SQL Server查看表结构及视图,适合开发者使用,简单易用

SELECT * FROM INFORMATION_SCHEMA.TABLES SELECT * FROM INFORMATION_SCHEMA.COLUMNS 查看执行结果 SQL Server查看表结构及视图,适合开发者使用,简单易用,布布扣,bubuko.com

SQL SERVER 查看SQL语句IO,时间,索引消耗

1.查看SQL语句IO消耗 set statistics io on     select * from dbo.jx_order where order_time>'2011-04-12 12:49:57.580' set statistics io off 2.查看SQL语句时间消耗 set statistics time on      select * from dbo.jx_order where order_time>'2011-04-12 12:49:57.580' set st

sql server 查看列备注、类型、字段大小

select 列名 = a.name ,类型 = c.name ,长度 = columnproperty(a.id,a.name,'precision') ,备注 = g.value from syscolumns a left join sysobjects b on a.id=b.id left join systypes c on a.xusertype = c.xusertype left join sysproperties g on a.id =g.id and a.colid =g

SQL SERVER 自带系统存储过程分类

目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变量功能. 数据收集器存储过程 用于处理数据收集器和以下组件:收集组.收集项和收集类型. 数据库引擎存储过程 用于 SQL Server 数据库引擎的常规维护. 数据库邮件存储过程 (Transact-SQL) 用于从 SQL Server 实例内执行电子邮件操作. 数据库维护计划存储过程 用于设置管