Mientras está conectado a nuestro servidor de producción (SQL Server 2008, máquina muy potente), esta instrucción SELECT demora 2 segundos , escupiendo todos los campos (4 MB de datos en total).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
Desde cualquier otro cuadro en la misma red (conexión mediante autenticación de SQL o autenticación de Windows), la misma consulta demora 1 minuto y 8 segundos .
Estoy probando con esta declaración muy simple para ilustrar que no es un problema de indexación o un problema relacionado con consultas. (Tenemos problemas de rendimiento con todas las consultas en este momento ...)
Las filas vienen en trozos, y no todos a la vez. Obtengo mis primeras filas al instante, y luego espero más de 1 minuto para que lleguen los lotes de filas.
Estas son las estadísticas del cliente de la consulta, cuando se ejecuta desde el cuadro remoto:
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 el "Tiempo de procesamiento del cliente" es igual al tiempo total de ejecución.
¿Alguien sabe qué pasos puedo tomar para diagnosticar por qué la transferencia de los datos reales está tomando tanto tiempo?
¿Existe un parámetro de configuración de SQL que restrinja o limite la velocidad de transferencia de datos entre máquinas?