找锁死的表的过程

以下过程可以查找到锁死的进程

USE [ksoa]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[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 master.dbo.sysprocesses where  blocked>0 ) a
where not EXISTS (select * from (select * from master.dbo.sysprocesses where  blocked>0) b where spid=a.blocked)
union 
select spid,blocked from master.dbo.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-12-22 21:51:26

找锁死的表的过程的相关文章

Lua查找表元素过程(元表、__index方法是如何工作的)(转载)

文章来源于 Lua查找表元素过程(元表.__index方法是如何工作的) Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制,也是凭借这个机制,才能够实现“面向对象”的. 举例说明: tempTable = {} print(tempTable.memberA) --这里试图打印tempTable并不存在的成员memberA 执行结果:nil输出为nil的原因很简单,tempTable中并没有m

【同步复制常见错误处理3】找不到存储的过程 sp_MSins_tablename

环境在SQL2008 R2同步复制时出错 这个错误提示是由于在订阅端没有找到同步时调用的同步存储过程,MS错误说明: 当某个事务发布在 SQL SERVER自动同步设置选择订阅服务器插入. 更新和删除存储在每个表都包含在该发布的订阅服务器创建过程.包含这些存储的过程的脚本是由快照代理程序创建和应用于订阅服务器在初始同步过程中的分发代理程序.如果手动同步订阅这些存储的过程将不会创建,并且必须手动创建.因为在这种情况下 (手动同步) 订阅服务器上不存在的存储的过程,则分发作业通过后续插入生成以下错误

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

用 CrystalReportViewer1 控件在asp.net的网页上显示报表,如果做报表时调用数据表数据的方式调用是可以成功的,但报表是用存储过程获取数据方式会出现以下错误: 找不到表'RptOpenCheck;1' . 文件 G:\TEMP\FO-OpenCheck {6D191F06-DECF-4A25-88FC-8553E3D435AA}.rpt 内出错: 找不到表. Error: 未将对象引用设置到对象的实例. The table 'RptOpenCheck;1' could no

Android no such table (找不到表)

今天在学习项目时,一直报错no such table Users.说找不到Users表.我就纳闷了,数据库是复制过去的,检查表名也没有写错.这是怎么回事呢?检查了半天才发现原来是数据库的路径错了. 我把数据库复制到SD卡中,但是却用的Android自带的继承sqliteopenhelper的方式中getreadabledatabase()方法来获取的数据库.大家都知道,Android中默认的数据库路径是:/data/data/包名/databases/数据库名.因此,Android自带的getr

金蝶k3里面的EXCEL表:格式-表页管理里面添加了表页之后为什么找不到表的原因

今天遇到财务部的同事反馈信息,在K3里的EXCEL表格里找不到表页了.江湖救急!!! 远程连过去看下,发觉确实是没有了表页,就想按OFFICE 里的EXCEL处理方法:找文件--选项--高级--显示 ,里找勾勾.但是发觉K3 里的与OFFICE EXCEL不一样.根本没有,只可以在格式--表页管理哪里看到确实是存在着表页.但还是没有什么选项提示是可以显示或者隐藏表页的. 也试过问他们有做过那些更改或者设置,可以逆反过来处理,但财务的大爷们都是死不认帐的,所以也只能是找度娘了. 还好度娘确实是够强

Spark sql 在yarn-cluster模式下找不到表

在hive里建一个数据库test,在数据库里建了一张表user,然后在Spark程序中使用Spark sql读取这张表 "select * form test.user" 当部署模式是spark stand模式和yarn-client模式时,程序可以正常运行,但yarn-cluster模式就报了找不到"test.user"表的错误. 解决办法: spark和hive整合,把hive-site.xml加到spark根目录的conf下,所以,要在提交Spark任务的时候

时空一些常用的表和过程

系统表 存储过程 tb_spgl 系统核心注册 sk_reg80 业务表 销售缺货登录 xsqhdj 结转流水库 jzlsk 月末结转库 ymjzhk 过程 月末结转 ymjz_proc 计划养护 wyf_yhjhjs 商品帐页登记过程 SPU_Z_sp_account 成本核算过程 spu_z_chengbenhesuan 采购计划系统服务调用过程 sbp_jzcg_query

postgres创建表的过程以及部分源码分析

背景:修改pg内核,在创建表时,表名不能和当前的用户名同名. 首先我们知道DefineRelation此函数是最终创建表结构的函数,最主要的参数是CreateStmt这个结构,该结构如下 typedef struct CreateStmt { NodeTag type; RangeVar *relation; /* relation to create */ List *tableElts; /* column definitions (list of ColumnDef) */ List *i

Lua查找表元素过程(元表、__index方法是如何工作的)

father = { house=1 } son = { car=1 } setmetatable(son, father) --把son的metatable设置为father print(son.house) 输出的结果是nil,但如果把代码改为 father = { house=1 } father.__index = father -- 把father的__index方法指向自己 son = { car=1 } setmetatable(son, father) print(son.hou