锁的问题
点击次数:32 次 发布日期:2008-11-22 16:57:12 作者:源代码网
|
源代码网推荐
在老是出现这样的错误提示!
-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
源代码网供稿. |