IT SERVICES - Performance/Lentidão/Travamentos - Qual comando pode ser utilizado para localizar Locks em base de dados Microsoft SQLServer
Dúvida
Qual comando pode ser utilizado para localizar Locks em base de dados Microsoft SQLServer?
Solução
Importante
O comando descrito abaixo é um exemplo de comando utilizado para coleta de Locks na base de dados (em tempo real) pela equipe de DBAs da Senior.
A responsabilidade de execução deste comando é do DBA da sua empresa. Ele também poderá utilizar outros comandos para coleta dessa informação.
Para localizar locks em base de dados Microsoft SQLServer o seu DBA poderá utilizar o comando abaixo:
WITH NIVEL(SPID,BLOCKED,SEGUNDOS,LASTWAITTYPE,CONSULTA,NIVEL)
AS
(
SELECT P.SPID
, P.BLOCKED
, P.WAITTIME / 1000 SEGUNDOS
, P.LASTWAITTYPE
, S.TEXT CONSULTA
, 1 AS NIVEL
FROM SYS.SYSPROCESSES P
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(P.SQL_HANDLE) S
WHERE P.BLOCKED = 0
AND P.SPID IN (SELECT BLOCKED FROM SYS.SYSPROCESSES)
UNION ALL
SELECT P.SPID
, P.BLOCKED
, P.WAITTIME / 1000 SEGUNDOS
, P.LASTWAITTYPE
, S.TEXT CONSULTA
, N.NIVEL + 1 AS NIVEL
FROM SYS.SYSPROCESSES P
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(P.SQL_HANDLE) S
INNER JOIN NIVEL N ON P.BLOCKED = N.SPID
)
SELECT REPLICATE(' - ', NIVEL) + CAST(SPID AS VARCHAR(50)) AS "NIVEL",SPID,BLOCKED,SEGUNDOS,LASTWAITTYPE,CONSULTA FROM NIVEL
Observação
Para mais informações sobre o questões relacionadas a Performance/Lentidão/Travamentos do Gestão Empresarial | ERP, consulte o artigo ERP - Performance/Lentidão/Travamentos - Onde é possível encontrar informações diversas sobre questões relacionadas a Performance/Lentidão/Travamentos (índice).