Mentre è collegato al nostro server di produzione (SQL Server 2008, macchina molto potente), questa istruzione SELECT richiede 2 secondi , restituendo tutti i campi (4 MB di dati in totale).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
Da qualsiasi altra casella sulla stessa rete (connessione mediante autenticazione SQL o Autenticazione Windows), la stessa query richiede 1 minuto, 8 secondi .
Sto testando con questa semplicissima affermazione per illustrare che non si tratta di un problema di indicizzazione o di una query. (Abbiamo problemi di prestazioni con tutte le query al momento ...)
Le file arrivano in pezzi, e non tutte in una volta. Ricevo immediatamente le mie prime file e quindi aspetto più di 1 minuto affinché arrivino i batch di righe.
Ecco le statistiche del client della query, quando viene eseguita dalla casella 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
Possiamo vedere che il "Tempo di elaborazione del client" è uguale al tempo di esecuzione totale.
Qualcuno sa quali passi posso fare per diagnosticare perché il trasferimento dei dati effettivi sta impiegando molto tempo?
Esiste un parametro di configurazione SQL che limita o limita la velocità di trasferimento dei dati tra computer?