August 30, 2011

Pass database parameter to sp_who2

I wanted to write a script for finding lock on database.
We have sp_who,sp_who2 stored procedures for this to find the lock but not for specific DB,
I have created a parameterized stored procedure that will take database name
as parameter.

CREATE PROCEDURE spGetDBLockStatus
(
   @DBNAME NVARCHAR(50)
)
AS
BEGIN
   CREATE TABLE #DBLockStatus
   (
       SPID     BIGINT,
       Status   VARCHAR(100),
       Login    VARCHAR(100),
       HostName VARCHAR(100),
       BlkBy    VARCHAR(100),
       DBName   VARCHAR(100),
       Command  VARCHAR(100),
       CPUTime  BIGINT,
       DiskIO     BIGINT,
       LastBatch    VARCHAR(100),
       ProgramName      VARCHAR(100),
       SPIDR          BIGINT,   
       REQUESTID BIGINT
   )
   INSERT INTO #DBLockStatus
   (SPID,Status,Login,HostName,BlkBy,DBName,Command,CPUTime,DiskIO,LastBatch,ProgramName,SPIDR,REQUESTID)
   EXEC Sp_Who2
   SELECT * FROM #DBLockStatus
   WHERE
   DBName = @DBNAME
   ORDER BY CPUTime DESC
END

EXEC spGetDBLockStatus 'BGDB'

That’s It
Enjoy Learning

2 comments:

Manish said...

Very good information,I am searching it for long time.

Shatrughna Kumar said...

Thanks Manish for appreciation.

Post a Comment