Procedure sp_usrheadblocker

SQL Server

05/12/2014

Boa tarde pessoal,

Hoje eu tive um problema em um cliente. Descobri que existiam 5 processos no sql que estavam usando a mesma tabela e com isso estavam travando essa tabela.
Acabei matando o processo principal e resolvi o problema. Li em um artigo que a procedure sp_usrheadblocker me mostra qual conexão esta travando minha instrução sql.
Não consegui executar essa procedure nem com usuário sa. Alguém já executou essa procedure?
O retorno do comando, é que o banco não conseguiu encontrar a procedure executada.
Odilon Junior

Odilon Junior

Curtidas 0

Respostas

Soeuseijothaz

Soeuseijothaz

05/12/2014

Acho mais recomendado identificar o porque que esta ficando bloqueado.

Acredito que na sua aplicação em algum momento não esta sendo fechada a conexão ou pode esta fazendo lock de registro sem necessidade.

Você deve verificar qual funcionalidade esta sendo usada quando bloqueia a tabela e ver se realmente é necessário o bloqueio.

Se você tiver certeza de que não será necessário o lock, um select por exemplo, pode usar a clausula NOLOCK. Agora cuidado pois se usá-la de forma incorreta pode afetar a integridade do seu bd.
GOSTEI 0
Odilon Junior

Odilon Junior

05/12/2014

Acho mais recomendado identificar o porque que esta ficando bloqueado.

Acredito que na sua aplicação em algum momento não esta sendo fechada a conexão ou pode esta fazendo lock de registro sem necessidade.

Você deve verificar qual funcionalidade esta sendo usada quando bloqueia a tabela e ver se realmente é necessário o bloqueio.

Se você tiver certeza de que não será necessário o lock, um select por exemplo, pode usar a clausula NOLOCK. Agora cuidado pois se usá-la de forma incorreta pode afetar a integridade do seu bd.



Eu vi que os processos eram 4 selects e 1 delete. Consegui inclusive ver esses comandos.
Eu ja havia rodado o mesmo select usando o nolock e o retorno mostrava o que era esperado.
Na verdade eu queria ver o retorno dessa procedure. Você já a executou Jothaz ??
GOSTEI 0
Rafael Souza

Rafael Souza

05/12/2014

 select *  
  from tabela (WITH NOLOCK)

// Se travar a tabela, da uma olhada no teu código e verifica se não há nenhuma redundância ou 
// se a procedure esta trabalhando com tabelas temporárias ou
// verifica as tabelas relacionadas etc..
GOSTEI 0
POSTAR