SQL Server Management Studio (SSMS) 2012 lento para mostrar resultados apenas em Grid

0

Eu geralmente uso o Microsoft SQL Server Management Studio 2012 (11.0.3000.0) com os resultados da consulta sendo exibidos em uma grade. A partir de 3 ou 4 dias atrás, os resultados da consulta foram bastante lentos, mas apenas de forma intermitente. Como exemplo, uma consulta simples como

SELECT GETDATE() 

leva 7 segundos (de acordo com o SSMS) para exibir a data / hora atual. Se eu executar a consulta com o rastreio / profiler ativado, posso ver que a consulta é executada quase que imediatamente, embora o timer do SSMS continue a funcionar e nenhum resultado seja exibido por algum tempo. O valor de data / hora resultante é o mesmo que o trace / profiler mostra para a coluna "StarTime". Normalmente, a consulta retornará em 1 segundo ou menos, mas se eu executar 5 ou 6 vezes, capturarei o problema e levará algum tempo para terminar.

Quando isso acontece, meu notebook quad core aumenta para 25% da CPU (núcleo completo sendo utilizado durante todo o período de tempo) até que a grade seja elaborada.

Estou conectando a um servidor local (na minha LAN) que está sob muito pouca carga e ninguém na minha empresa parece estar com problemas semelhantes. Eu instalei o SSMS 2014 para ver se isso ajudou (não). Pensando que era um problema com a criação do próprio DataGrid, eu instalei o .NET 4.6 que também não ajudou.

Quando executo os resultados em Texto, eles aparecem em menos de um segundo, todas as vezes.

Não parece ser um problema de rede:

Reply from 192.168.10.47: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.10.47:
    Packets: Sent = 24, Received = 24, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Alguém tem alguma sugestão sobre coisas que eu deveria tentar?

Estou no Windows 7 (x64).

    
por Nico M 21.10.2015 / 08:34

1 resposta

0

Consegui encontrar o problema executando a consulta enquanto monitorava o processo com o Monitor de processo do SysInternalSuite . Ao exibir os resultados da consulta em uma grade, o SQL Server Management Studio cria um arquivo .tmp em C: \ Users \ nome do usuário \ AppData \ Local \ Temp \ chamado tmp #### .tmp (em que os # são caracteres gerados aleatoriamente) .

Por alguma razão, meu diretório temp tinha sido preenchido com mais de 40.000 desses arquivos (todos vazios) e o Process Monitor estava mostrando que quando minha consulta não estava exibindo os resultados, estava lançando milhares de erros de "NAME COLLISION" tentando vir com um novo nome para o arquivo temporário que ele estava tentando criar.

Exibir resultados de consulta para texto não cria um arquivo temporário que explique por que isso não está causando problemas.

A exclusão de todos os arquivos .tmp desse diretório temporário corrigiu meu problema imediatamente.

Espero que isso ajude alguém.

    
por 21.10.2015 / 19:59