Tempo aproximado para leitura: 00:02:00 min
Dúvida
Como identificar locks no banco de dados do Logix em SQLServer?
Ambiente
Framework - Framework (Linha Logix) - Administração Logix - Todas as versões
Solução
Para identificar locks no banco de dados do Logix em SQLServer basta executar as consultas abaixo diretamente no banco de dados, utilizando qualquer ferramenta SQL - Structured Query Language suportada pelo banco.
SELECT
blocking_session_id AS Sessao_Bloqueadora,
session_id AS Sessao_Bloqueada,
wait_type,
wait_time,
wait_resource,
DB_NAME(database_id) AS Nome_DB,
status,
command
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Para identificar qual o registro correspondente no Logix, realize uma consulta na tabela LOG_DADOS_SESSAO_LOGIX filtrando pelos códigos retornados nos campos Sessao_Bloqueadora e Sessao_Bloqueada.
SELECT * FROM LOG_DADOS_SESSAO_LOGIX
WHERE sid IN ( <Sessao_Bloqueadora>, <Sessao_Bloqueada> )
Você também pode visualizar qual o comando SQL que esta realizando o LOCK dos dados, para isso execute o seguinte comando.
SELECT c.session_id, es.program_name, es.login_name,
es.host_name, DB_NAME(es.database_id) AS DatabaseName,
c.properties, c.creation_time, c.is_open, t.text
FROM sys.dm_exec_cursors (0) c
LEFT JOIN sys.dm_exec_sessions AS es ON c.session_id = es.session_id
CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t
O comando abaixo traz em uma única consulta todos os dados referente ao Lock que esta ocorrendo no banco de dados.
SELECT
r.blocking_session_id AS Sessao_Bloqueadora,
r.session_id AS Sessao_Bloqueada,
r.wait_type,
r.wait_time,
DB_NAME(r.database_id) AS Nome_DB,
r.status,
c.creation_time,
c.is_open,
t.text AS Query_Cursor,
l.PROGRAMA
FROM sys.dm_exec_requests r
LEFT JOIN sys.dm_exec_cursors(0) c ON r.session_id = c.session_id
LEFT JOIN sys.dm_exec_sessions s ON c.session_id = s.session_id
LEFT JOIN LOGIX.LOG_DADOS_SESSAO_LOGIX l ON r.session_id = l.SID
CROSS APPLY sys.dm_exec_sql_text(c.sql_handle) t
WHERE r.blocking_session_id <> 0;
0 Comentários