Identificando erros de “Tempo Limite de Bloqueio” no SQL Server 2000

3

Nosso software de ERP usa um banco de dados do SQL Server 2000. Quando executamos uma tarefa específica no software que costumava demorar alguns segundos, ocorre um atraso de 300 segundos e o SQL Server retorna o erro "Bloquear Tempo Limite. Tempo Limite de Conexão do SQL Server".

Eu tentei identificar o problema usando o SQL Server Profiler, e pude ver alguns ROLLBACKs lá, mas não tirei conclusões.

Existe uma maneira melhor de identificar qual consulta está bloqueando qual recurso e quais tempos limite de consulta?

    
por Nick Kavadias 19.08.2009 / 03:39

3 respostas

2

Você pode consultar as tabelas master.dbo.sysprocesses e master.dbo.syslocks para ver o que está realmente sendo executado no sistema e quais bloqueios estão sendo executados. Isso junto com sp_who2 pode ajudá-lo a descobrir o que está bloqueando os registros ou quais blocos estão acontecendo.

Você está realizando algum tipo de manutenção regular do banco de dados no banco de dados SQL? Caso contrário, essa falta de manutenção pode levar a todos os tipos de problemas de desempenho.

    
por 19.08.2009 / 04:35
1

No analisador de consultas, execute:

sp_who2

Olhe para o BlkBy columed, que mostra o que o spid é bloqueado por

execute:

DBCC INPUTBUFFER(spid)

onde spid é um número real como 51 para ver qual foi a última declaração do spid de bloqueio.

    
por 19.08.2009 / 04:36
1

Para aproveitar o que Nick e Denny escreveram, coloque essas consultas em um trabalho do SQL Agent em execução em qualquer intervalo que seja melhor para sua situação. Capture a saída para um arquivo .txt para acompanhamento. Parece que não deveria ter que correr tanto tempo para você encontrar a fonte do problema.

    
por 19.08.2009 / 15:45