Array
(
)

Procedure sp_usrheadblocker

Odilon Junior
   - 05 dez 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.

Jothaz
   - 05 dez 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.

Odilon Junior
   - 05 dez 2014


Citação:
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 ??

Rafael
   - 06 dez 2014

#Código

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..