Enquanto conectada ao nosso servidor de produção (SQL Server 2008, máquina muito poderosa), essa instrução SELECT leva 2 segundos , retornando todos os campos (4 MB de dados no total).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
De qualquer outra caixa na mesma rede (conexão usando autenticação SQL ou autenticação do Windows), a mesma consulta leva 1 minuto, 8 segundos .
Estou testando com esta declaração muito simples para ilustrar que não é um problema de indexação ou relacionado a consultas. (Temos problemas de desempenho com todas as consultas no momento ...)
As linhas vêm em pedaços, e nem todos de uma vez. Recebo minhas primeiras linhas instantaneamente e espero mais de um minuto para que os lotes de linhas entrem.
Aqui estão as estatísticas do cliente da consulta, quando é executada a partir da caixa remota:
Query Profile Statistics
Number of INSERT, DELETE and UPDATE statements 0
Rows affected by INSERT, DELETE, or UPDATE statements 0
Number of SELECT statements 2
Rows returned by SELECT statements 30001
Number of transactions 0
Network Statistics
Number of server roundtrips 3
TDS packets sent from client 3
TDS packets received from server 1216
Bytes sent from client 266
Bytes received from server 4019800
Time Statistics
Client processing time 72441 ms (72 seconds)
Total execution time 72441 ms
Wait time on server replies 0
Podemos ver que o "Tempo de processamento do cliente" é igual ao tempo total de execução.
Alguém sabe quais etapas eu posso executar para diagnosticar por que a transferência dos dados reais está demorando muito?
Existe um parâmetro de configuração SQL que restrinja ou limite a velocidade de transferência de dados entre máquinas?