De vez en cuando tengo la necesidad de ver quien me ha bloqueado algún proceso y al ejecutar sp_who2 'Active' me da demasiada información que no necesito. Hace tiempo hice un script que me limita la información solo a lo que se refiere a los procesos bloqueados.
De algún lugar de la red cogí scripts similares y adapté a mis necesidades por lo que si a alguien le hace falta o le interesa que lo coja sin dudar.
IF NOT OBJECT_ID('tempdb.dbo.#sp_who2') IS NULL DROP TABLE dbo.#sp_who2 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, REQUESTID INT) GO -- Inserto los valores INSERT INTO #sp_who2 EXEC sp_who2 GO -- Seleccion de valores SELECT blkby into #bloqueadoresBloqueados FROM #sp_who2 where ltrim(rtrim(replace(blkby,'.',''))) <> '' -- bloqueados union SELECT spid FROM #sp_who2 where ltrim(rtrim(replace(blkby,'.',''))) <> '' -- bloqueados select * from #sp_who2 where SPID in (select * from #bloqueadoresBloqueados) drop table #bloqueadoresBloqueados GO -- Borrado temporal (para no dejar cargada) DROP TABLE #sp_who2 GOEl objetivo de estos post son para no olvidar donde deje los "dichosos" scripts, por lo que al final será como un cajón de sastre para mis necesidades puntuales. De todos modos si veis algo mal, algo mejorable, etc... no dudéis en comentarlo.
No hay comentarios:
Publicar un comentario