CREATE Table #Who(spid int, ecid int, status nvarchar(50), loginname nvarchar(50), hostname nvarchar(50), blk int, dbname nvarchar(50), cmd nvarchar(50), request_ID int);CREATE Table #Lock(spid int, dpid int, objid int, indld int, [Type] nvarchar(20), Resource nvarchar(50), Mode nvarchar(10), Status nvarchar(10));INSERT INTO #Who EXEC sp_who active --看哪个引起的阻塞,blk INSERT INTO #Lock EXEC sp_lock --看锁住了那个资源id,objid DECLARE @DBName nvarchar(20);SET @DBName='NameOfDataBase'SELECT #Who.* FROM #Who WHERE dbname=@DBNameSELECT #Lock.* FROM #Lock JOIN #Who ON #Who.spid=#Lock.spid AND dbname=@DBName;--最后发送到SQL Server的语句DECLARE crsr Cursor FOR SELECT blk FROM #Who WHERE dbname=@DBName AND blk<>0;DECLARE @blk int;open crsr;FETCH NEXT FROM crsr INTO @blk;WHILE (@@FETCH_STATUS = 0)BEGIN; dbcc inputbuffer(@blk); FETCH NEXT FROM crsr INTO @blk;END;close crsr;DEALLOCATE crsr;--锁定的资源SELECT #Who.spid,hostname,objid,[type],mode,object_name(objid) as objName FROM #Lock JOIN #Who ON #Who.spid=#Lock.spid AND dbname=@DBName WHERE objid<>0;DROP Table #Who;DROP Table #Lock;
--2005 select * from master.dbo.syslockinfo where object_name(rsc_objid)=N'your table name' --好像,2005管理,活动监视器,可以看到数据库是否存在死锁
--2005
select * from master.dbo.syslockinfo where object_name(rsc_objid)=N'your table name'
--好像,2005管理,活动监视器,可以看到数据库是否存在死锁
我在监视器当中查看了一些挂起的语句,其中的查询都是没有加(nolock)的,另外表关联也不叫多,where条件方面还比较合理,但是由于特殊原因我现在无法修改这些sql语句,所以我这里提出一个疑问,因为客户端用的是无线,假如客户端在打开某个页面向服务器发起查询请求,然后由于无线网络不稳定,这时候其他用户访问刚才查询所涉及到的那些表会有影响吗。