Под SQL Server, там простой способ отфильтровать вывод sp_who2? Скажите, что я хотел просто показать строки для определенной базы данных, например.
Вы можете попробовать что-нибудь вроде
DECLARE @Table TABLE(
SPID INT,
Status VARCHAR(MAX),
LOGIN VARCHAR(MAX),
HostName VARCHAR(MAX),
BlkBy VARCHAR(MAX),
DBName VARCHAR(MAX),
Command VARCHAR(MAX),
CPUTime INT,
DiskIO INT,
LastBatch VARCHAR(MAX),
ProgramName VARCHAR(MAX),
SPID_1 INT,
REQUESTID INT
)
INSERT INTO @Table EXEC sp_who2
SELECT *
FROM @Table
WHERE ....
И отфильтровать то, что вам нужно.
Один из способов - создать временную таблицу:
CREATE TABLE #sp_who2
(
SPID INT,
Status VARCHAR(1000) NULL,
Login SYSNAME NULL,
HostName SYSNAME NULL,
BlkBy SYSNAME NULL,
DBName SYSNAME NULL,
Command VARCHAR(1000) NULL,
CPUTime INT NULL,
DiskIO INT NULL,
LastBatch VARCHAR(1000) NULL,
ProgramName VARCHAR(1000) NULL,
SPID2 INT
)
GO
INSERT INTO #sp_who2
EXEC sp_who2
GO
SELECT *
FROM #sp_who2
WHERE Login = 'bla'
GO
DROP TABLE #sp_who2
GO
Да, путем захвата вывода sp_who2 в таблицу и последующего выбора из таблицы, но это был бы плохой способ сделать это. Во-первых, потому что sp_who2, несмотря на свою популярность, является недокументированной процедурой, и вам не следует полагаться на недокументированные процедуры. Во-вторых, все функции sp_who2 и многое другое можно получить из sys.dm_exec_requests и других DMV, а show можно фильтровать, упорядочивать, объединять и все другие полезности, которые поставляются с запрашиваемыми наборами строк.
Существует довольно много хороших пользовательских хранимых процедур sp_who3 - я уверен, что Адам Мачаник сделал действительно хорошую, AFAIK.
Адам называет ее Who Is Active: http://whoisactive.com