SQL Server – Table Lock – Identificando processo responsável

Tarefa:
Descobrir qual processo do servidor (PID) é responsavel por um lock em determinada tabela.

Usando sp_lock, teríamos um trabalho mais de garimpo à nível de o que cada id representa, ou traríamos sua execução à uma temporária e a partir daí utilizaríamos recursos de query como os que seguirão no exemplo…
Entretanto, acessando o technet, observei a indicação que tanto a sp_lock, quanto a master.dbo.sysprocesses são consideradas obsoletas. Seus sucessores são as dynamic managed views sys.dm_tran_locks e, para a nossa tarefa, sys.dm_exec_sessions.

Mãos a obra!

use SEU_BANCO
go

select     db_name(l.resource_database_id) as db, object_name(l.resource_associated_entity_id) as tb
     ,     l.request_session_id, l.request_type, l.request_mode, l.request_status, l.request_owner_type
     ,     s.host_process_id, s.program_name, s.client_interface_name, s.login_name, s.original_login_name
     ,     s.host_name, s.program_name, s.status
from
          master.sys.dm_tran_locks l
               inner join master.sys.dm_exec_sessions s
                    on          s.session_id = l.request_session_id

where    
          resource_type = 'object'
     and     resource_database_id = db_id()

No gerenciador de tarefas do host identificado por [host_name]:
Após incluir o PID dos processos exibidos no gerenciador de tarefas (Exibir > Colunas > PID), basta encontrar o PID = [host_process_id] e, tchau?!

T+

Referências:
http://technet.microsoft.com/en-us/library/ms187749.aspx
http://support.microsoft.com/kb/117559/en-us
http://primalcortex.wordpress.com/2007/11/15/sql-server-connecting-windows-process-to-sql-spids/
http://davidbridge.wordpress.com/2010/11/01/do-not-use-sysprocesses/

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s