# Lines of Text
---------------
10
text
----
/* Sccsid = " generic/sproc/ " */
/* 4.8 1.1 06/14/90 sproc/src/lock */
/*
** Messages for "sp_lock"
**
** 18052, "The class column will display the cursor name for locks associated
** with a cursor for the current user and the cu
rsor id for other
** users."
*/
create procedure p_lock
@spid1 int = NULL, /* server process id to check for locks */
@spid2 int = NULL /* other process id to check for locks */
as
declare @length int
declare @msg varch
ar(250)
if @@trancount = 0
begin
set chained off
end
set transaction isolation level 1
/* Print warning message about cursor lock info:
** 18052, "The class column will display the cursor name for locks associated
**
with a cursor for the current user and the cursor id for other
** users."
*/
exec sp_getmessage 18052, @msg out
print @msg
/*
** Show the locks for both parameters.
*/
if @spid1 is not NULL
begin
select @length = ma
x(datalength(db_name(dbid)))
from master..syslocks
where spid in (@spid1, @spid2)
if (@length > 15)
select spid, locktype =v. name, table_name = n.name , page,
dbname = db_name(dbid), class
from master..syslocks l, master..spt_va
lues v, maindb.. sysobjects n
where l.type = v.number
and v.type = "L"
and n.id = l.id
and spid in (@spid1, @spid2)
else
select spid, locktype = v.name, table_name = n.name, page,
dbname = convert(char(15), db_name(dbid))
, class
from master..syslocks l, master..spt_values v, maindb.. sysobjects n
where l.type = v.number
and v.type = "L"
and n.id = l.id
and spid in (@spid1, @spid2)
end
/*
** No parameters, so show all the locks.
*/
else
begin
select @length = max(datalength(db_name(dbid)))
from master..syslocks
if (@length > 15)
select spid, locktype = v.name, table_name = n.name, page,
dbname = db_name(dbid), class
from master..syslocks l, master..spt_valu
es v, maindb.. sysobjects n
where l.type = v.number
and n.id = l.id
and v.type = "L"
order by spid, dbname, table_name , locktype, page
else
select spid, locktype =v. name, table_name =n.name, page,
dbname = convert(char(15),
db_name(dbid)), class
from master..syslocks l, master..spt_values v, maindb.. sysobjects n
where l.type = v.number
and v.type = "L"
and n.id = l.id
order by spid, dbname, table_name, locktype, page
end
return (0)