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
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:
Very good information,I am searching it for long time.
Thanks Manish for appreciation.
Post a Comment