MS SQL Server. Как сделать сортировки в процедуре sp_who2

sp_who

При работе со встроенной в MS SQL Server процедурой sp_who2 столкнулся с тем, что в ней нельзя производить сортировки и выборки, например, по DBName и/или HostName:

Это по понятным причинам создает сложности в поиске блокирующего или зависшего процесса. Для решения данной проблемы сделал процедуру с примером снятия блокировок по процессам

kill {SPID} (снимал процессы с высоким CPUTime, DiskIO):



--1. Создаем временную таблицу #sp_who2
CREATE TABLE #sp_who2 
(
   SPID INT,  
   Status VARCHAR(250) NULL,  
   Login SYSNAME NULL,  
   HostName SYSNAME NULL,  
   BlkBy SYSNAME NULL,  
   DBName SYSNAME NULL,  
   Command VARCHAR(250) NULL,  
   CPUTime INT NULL,  
   DiskIO INT NULL,  
   LastBatch VARCHAR(250) NULL,  
   ProgramName VARCHAR(250) NULL,  
   SPID2 INT NULL,
   REQUESTID INT NULL
) 
GO

--2. Вставляем данные из процедуры sp_who2 во временную таблицу #sp_who2
INSERT INTO #sp_who2 EXEC sp_who2
GO

--3. Делаем выборку данных по процессам из таблицы #sp_who2
SELECT * FROM #sp_who2
WHERE       DBName = 'monitorPK'
AND    HostName = 'DB02'
ORDER BY LastBatch desc

GO

--4. Снимаем блокировки по процессам (пример):
kill 70
kill 76
kill 91
kill 97

--5. Удаляем временную таблицу #sp_who2
DROP TABLE #sp_who2
GO

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.