Lorsqu'elle est connectée à notre serveur de production (SQL Server 2008, machine très puissante), cette instruction SELECT prend 2 secondes , crachant tous les champs (4 Mo de données au total).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
À partir de n'importe quelle autre boîte sur le même réseau (connexion en utilisant l'authentification SQL ou l'authentification Windows), la même requête prend 1 minute, 8 secondes .
Je teste avec cette déclaration très simple pour illustrer qu'il ne s'agit pas d'un problème d'indexation ou d'un problème lié aux requêtes. (Nous avons actuellement des problèmes de performances avec toutes les requêtes ...)
Les rangées viennent en morceaux, et pas en même temps. J'obtiens mes premières lignes instantanément, puis j'attends plus d'une minute pour que les lots de lignes entrent.
Voici les statistiques client de la requête, lorsqu'elle est exécutée à partir de la boîte distante:
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
Nous pouvons voir que le «temps de traitement client» est égal au temps d'exécution total.
Quelqu'un sait-il quelles mesures je peux prendre pour diagnostiquer pourquoi le transfert des données réelles prend du temps?
Existe-t-il un paramètre de configuration SQL qui restreint ou limite la vitesse de transfert de données entre les machines?