Підключившись до нашого виробничого сервера (SQL Server 2008, дуже потужна машина), ця операція SELECT займає 2 секунди , виплюнувши всі поля (загалом 4 Мб даних).
SELECT TOP (30000) *
FROM person
WITH(NOLOCK);
З будь-якого іншого вікна цієї ж мережі (підключення за допомогою автентифікації SQL або автентифікації Windows) той самий запит займає 1 хвилину, 8 секунд .
Я тестую це дуже просте твердження, щоб проілюструвати, що це не проблема індексації чи проблема, пов'язана із запитом. (Наразі у нас є проблеми з ефективністю всіх запитів ...)
Ряди бувають шматками, і не всі одразу. Я отримую свої перші ряди миттєво, а потім чекаю більше 1 хвилини, щоб партії рядків увійшли.
Ось Статистика клієнта запиту, коли він запускається з віддаленого вікна:
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
Ми можемо бачити, що "Час обробки клієнта" дорівнює загальному часу виконання.
Хтось знає, які кроки я можу зробити, щоб діагностувати, чому передача фактичних даних займає тривалий час?
Чи є параметр конфігурації SQL, який обмежує або обмежує швидкість передачі даних між машинами?