Transaction Processing Mechanism in SQL -- sp_lock2

Source: Internet
Author: User
Transaction Processing Mechanism in SQL sp_lock2Version: SQLServer7.02000Createdby: Alexander chigrikwww.mssqlcity.com

Transaction Processing Mechanism in SQL sp_lock2Version: SQL Server 7.0/2000 Created by: Alexander Chigrikhttp: // www.MSSQLCity.com/-all about ms SQL (SQL Server Articles, FAQ, Scripts, tips and Test Exams ). this stored procedure can be used instead

Transaction Processing Mechanism in SQL
sp_lock2Version: SQL Server 7.0/2000Created by: Alexander Chigrikhttp://www.MSSQLCity.com/ - all about MS SQL(SQL Server Articles, FAQ, Scripts, Tips and Test Exams). This stored procedure can be used instead of sp_lock system stored procedureto return more detailed locking view (it can return user name, host name,database name, object name, index name and object owner).This is the example to use sp_lock2:EXEC sp_lock2/*Version: SQL Server 7.0/2000Created by: Alexander Chigrikhttp://www.MSSQLCity.com/ - all about MS SQL(SQL Server Articles, FAQ, Scripts, Tips and Test Exams).This stored procedure can be used instead of sp_lock stored procedureto return more detailed locking view (it can return user name, host name,database name, object name, index name and object owner).This is the example to use sp_lock2:EXEC sp_lock2*/USE MASTERGOIF OBJECT_ID('sp_lock2') IS NOT NULL DROP PROC sp_lock2GOCREATE PROCEDURE sp_lock2@spid1 int = NULL,      /* server process id to check for locks */@spid2 int = NULL       /* other process id to check for locks */asset nocount on/*** Show the locks for both parameters.*/declare @objid int,   @indid int,   @dbid int,   @string Nvarchar(255)CREATE TABLE #locktable   (   spid       smallint   ,loginname nvarchar(20)   ,hostname  nvarchar(30)   ,dbid      int   ,dbname    nvarchar(20)   ,ObjOwner  nvarchar(128)   ,objId     int   ,ObjName   nvarchar(128)   ,IndId     int   ,IndName   nvarchar(128)   ,Type      nvarchar(4)   ,Resource  nvarchar(16)   ,Mode      nvarchar(8)   ,Status    nvarchar(5)   )if @spid1 is not NULLbegin   INSERT #locktable      (      spid      ,loginname      ,hostname      ,dbid      ,dbname      ,ObjOwner      ,objId      ,ObjName      ,IndId      ,IndName      ,Type      ,Resource      ,Mode      ,Status      )   select convert (smallint, l.req_spid)      ,coalesce(substring (s.loginame, 1, 20),'')      ,coalesce(substring (s.hostname, 1, 30),'')      ,l.rsc_dbid      ,substring (db_name(l.rsc_dbid), 1, 20)      ,''      ,l.rsc_objid      ,''      ,l.rsc_indid      ,''      ,substring (v.name, 1, 4)      ,substring (l.rsc_text, 1, 16)      ,substring (u.name, 1, 8)      ,substring (x.name, 1, 5)   from master.dbo.syslockinfo l,      master.dbo.spt_values v,      master.dbo.spt_values x,      master.dbo.spt_values u,      master.dbo.sysprocesses s   where l.rsc_type = v.number   and   v.type = 'LR'   and   l.req_status = x.number   and   x.type = 'LS'   and   l.req_mode + 1 = u.number   and   u.type = 'L'   and   req_spid in (@spid1, @spid2)   and   req_spid = s.spidend/*** No parameters, so show all the locks.*/elsebegin   INSERT #locktable      (      spid      ,loginname      ,hostname      ,dbid      ,dbname      ,ObjOwner      ,objId      ,ObjName      ,IndId      ,IndName      ,Type      ,Resource      ,Mode      ,Status      )   select convert (smallint, l.req_spid)      ,coalesce(substring (s.loginame, 1, 20),'')      ,coalesce(substring (s.hostname, 1, 30),'')      ,l.rsc_dbid      ,substring (db_name(l.rsc_dbid), 1, 20)      ,''      ,l.rsc_objid      ,''      ,l.rsc_indid      ,''      ,substring (v.name, 1, 4)      ,substring (l.rsc_text, 1, 16)      ,substring (u.name, 1, 8)      ,substring (x.name, 1, 5)   from master.dbo.syslockinfo l,      master.dbo.spt_values v,      master.dbo.spt_values x,      master.dbo.spt_values u,      master.dbo.sysprocesses s   where l.rsc_type = v.number   and   v.type = 'LR'   and   l.req_status = x.number   and   x.type = 'LS'   and   l.req_mode + 1 = u.number   and   u.type = 'L'   and   req_spid = s.spid   order by spIDENDDECLARE lock_cursor CURSORFOR SELECT dbid, ObjId, IndId FROM #locktable  WHERE Type <>'DB' and Type <> 'FIL'OPEN lock_cursorFETCH NEXT FROM lock_cursor INTO @dbid, @ObjId, @IndIdWHILE @@FETCH_STATUS = 0   BEGIN   SELECT @string =      'USE ' + db_name(@dbid) + char(13)      + 'update #locktable set ObjName = name, ObjOwner = USER_NAME(uid)'      + ' from sysobjects where id = ' + convert(varchar(32),@objid)      + ' and ObjId = ' + convert(varchar(32),@objid)      + ' and dbid = ' + convert(varchar(32),@dbId)   EXECUTE (@string)   SELECT @string =      'USE ' + db_name(@dbid) + char(13)      + 'update #locktable set IndName = i.name from sysindexes i '      + ' where i.id = ' + convert(varchar(32),@objid)      + ' and i.indid = ' + convert(varchar(32),@indid)      + ' and ObjId = ' + convert(varchar(32),@objid)      + ' and dbid = ' + convert(varchar(32),@dbId)      + ' and #locktable.indid = ' + convert(varchar(32),@indid)   EXECUTE (@string)   FETCH NEXT FROM lock_cursor INTO @dbid, @ObjId, @IndId   ENDCLOSE lock_cursorDEALLOCATE lock_cursorSELECT * FROM #locktablereturn (0)-- END sp_lock2GO

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.