SQL Server – SQL Scripts to find and Kill all the Blocked Process in a database
SQL Server database administrators frequently need in especially development and test environments to find and kill all the blocked process. Following scripts are useful in that scenario.
Script – 1
-- Find All the Blocked Processes SELECT spid, status, loginame=SUBSTRING(loginame,1,12), hostname=SUBSTRING(hostname,1, 12), blk = CONVERT(char(3), blocked), dbname=SUBSTRING(DB_NAME(dbid),1, 10), cmd, waittype FROM master.dbo.sysprocesses WHERE spid IN (SELECT blocked FROM master.dbo.sysprocesses)
Script 2
-- Kill all the Blocked Processes of a Database DECLARE @DatabaseName nvarchar(50) -- Set the Database Name SET @DatabaseName = N'Datbase_Name' -- Select the current Daatbase -- SET @DatabaseName = DB_NAME() DECLARE @SQL varchar(max) SET @SQL = '' SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId and spid IN (SELECT blocked FROM master.dbo.sysprocesses) -- You can see the kill Processes ID -- SELECT @SQL --Kill the Processes EXEC(@SQL)
Similarly DBA can kill all the Processes of a Database as
-- Kill all the Processes of a Database DECLARE @DatabaseName nvarchar(50) -- Set the Database Name SET @DatabaseName = N'Datbase_Name' -- Select the current Daatbase -- SET @DatabaseName = DB_NAME() DECLARE @SQL varchar(max) SET @SQL = '' SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId -- You can see the kill Processes ID -- SELECT @SQL --Kill the Processes EXEC(@SQL)