现在老是出现这样的错误提示!
-2147467259 Your transaction(process ID #30) was deadlocked with another process and has been chosen as the deadlock victim.Return your transaction.
请问这个问题怎么解决?
use master go create proc killspid (@dbname varchar(20)) as begin declare @sql nvarchar(500),@temp varchar(1000) declare @spid int set @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')' exec (@sql) open getspid fetch next from getspid into @spid while @@fetch_status<>-1 begin set @temp='kill '+rtrim(@spid) exec(@temp) fetch next from getspid into @spid end close getspid deallocate getspid end --用法 use master exec killspid '数据库名'
死锁可以查一下: 1:sp_who 或 sp_who2 2: Select * from sysprocesses where blocked <> 0 3: 企业管理器->服务器->管理工具->活动->当前活动 然后把他kill掉。。。 4:SQL事件探查器,监控一下,看主要是那些处理引起的死锁.然后做相应的处理. 用事件探查器new一个trace,监视一下造成你sqlserver停顿的情况。。。
最好的办法还是检查一下引起锁的原因,一般是由你的代码引起的。 SQL事件探查器用法 开始--程序--MS SQLSERVER --事件探察器(SQL Profiler) --文件 --新建 --设置跟踪的项目... --然后数据库的调用情况就会显示出
--查看锁信息 select 进程id=req_spid ,数据库=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,rsc_objid,rsc_indid from master..syslockinfo
?
============================
killspid
sp_lockkill 52
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|