Я получаю очень большие задержки (10 ~ 30 секунд) в SQL Server Management Studio 2014 при попытке подключиться к экземпляру SQL Server 2012 через TCP с использованием проверки подлинности Windows . Это происходит при подключении обозревателя объектов или нового пустого окна запроса. После подключения выполнение запросов выполняется быстро. Проблема не возникает при подключении с использованием проверки подлинности SQL Server.
Среда:
- Windows 7, вошел как пользователь домена
- TCP-соединение через IP-адрес (не имя хоста)
- Сервер находится в удаленном месте, подключенном через VPN
- Без шифрования
Когда я вошел в систему на компьютере Windows 7 с моей учетной записью домена и подключился к тому же SQL Server через тот же VPN, задержки не было. Когда тот же сотрудник вошел в мой компьютер со своей учетной записью домена, он испытал задержку. Эти тесты показывают, что проблема уникальна для моего компьютера. Кроме того, проблема появляется только при подключении к этому конкретному SQL Server и VPN; Я могу подключиться к другим серверам SQL в локальной сети через Windows Authentication без каких-либо задержек.
Вещи, которые я пытался безуспешно:
- Отключены антивирус и брандмауэр
- Переименовал папку «12.0» в «% userprofile% \ AppData \ Roaming \ Microsoft \ SQL Server Management Studio» в «_12.0», чтобы заставить SSMS воссоздать мои пользовательские настройки.
- Принудительно использовать сетевой протокол TCP, а не
<default>
. Я также попробовал Named Pipes, но мой сервер не настроен для этого. - Установил SSMS 2012 и попробовал это вместо 2014.
- Отключенный IPv6
- Blackholed crl.microsoft.com до 127.0.0.1 в моем файле etc \ hosts.
- Отключил программу улучшения качества программного обеспечения в SSMS, Visual Studio и Windows.
- Удалите все приложения, связанные с SQL Server, с моего компьютера и переустановите только в 2012 году.
TCPView подсказки:
- Используя TCPView, я заметил, что когда я создаю новое соединение, его состояние сразу устанавливается ESTABLISHED, но затем одно или два дополнительных соединения с SQL Server постоянно пытаются и закрываются с помощью TIME_WAIT . На компьютере моего сотрудника эти соединения установлены и надежны. Так что я почти уверен, что это источник тайм-аутов, но для чего нужны соединения и почему они терпят неудачу? (У меня нет никаких дополнений в моей SSMS.)
Любые идеи?
Обновление: подсказка Intellisense / автозаполнения (?):
Я заметил, что, как только я наконец-то подключился, Intellisense / Autocomplete не работает. Требуются ли для этого отдельные соединения от SSMS? Я попытался отключить их, но это, похоже, не помогло решить проблему длительной задержки соединения.
источник
Ответы:
Попробуйте выполнить трассировку с помощью SQL Profiler, пока вы и ваш коллега подключаетесь к серверу.
Выберите RPC, оператор SQL и PreConnect - запуск / завершение.
Выберите опцию Сохранить результаты в таблицу, затем сравните две таблицы, чтобы найти узкое место.
Или, поскольку вы подключаетесь по IP, это может быть обратный поиск DNS. Если это так, добавьте запись в ваш файл hosts.
источник
Сначала проверьте настройки DNS вашего сервера или клиента.
Нередко у вашего SQL Server возникает проблема с подключением к Active Directory. Если вы попытаетесь использовать локальную учетную запись Windows, я уверен, что у вас не возникнет проблем. Нередко сервер настроен на использование общедоступной DNS в Интернете, и когда SQL Server подключается к DC, чтобы проверить учетные данные и подтвердить его, он попытается связаться с общедоступным DNS вместо DNS-сервера AD. Поскольку эта информация не хранится в общедоступном DNS, она не будет проверена, и это приведет к задержке, пока ей не удастся связаться с соответствующим DNS-сервером или DC через NTLM.
Поскольку вы не испытываете проблемы с другими серверами SQL, почти наверняка проблема не связана с конфигурациями AD или DC
Запустите команду IPConfig.exe / all из cmd, чтобы проверить настроенные DNS-серверы. У вас должны быть настроены только DNS-серверы AD. Удалите все общедоступные DNS-серверы и оставьте только DNS-серверы AD.
источник
Я расширил
C:\Windows\System32\drivers\etc\hosts
файл, добавив следующую строку:201.202.203.204
IP-адрес вашего сервера SQLmysqlserver
- любое имя, которое вам нравится (вам не нужно нигде его использовать).Это сделало мой сервер быстрее.
Спасибо: d -_- b, Джордан, Ригер, Фелицз, РоббЗ
источник
Отключите брандмауэр Windows на сервере SQL для сетевого профиля домена.
Get-NetFirewallProfile -Profile Domain
чтобы проверить его текущее состояниеSet-NetFirewallProfile -Profile Domain -Enabled False
чтобы выключить его.Если это так, вы можете включить его позже и настроить параметры. Или, если вы находитесь в безопасной среде, вы можете оставить это.
Странно то, что даже если брандмауэр Windows блокирует связь, вы все равно сможете подключиться, но как первоначальное рукопожатие, так и последующие запросы будут невероятно медленными. Моя теория (основанная на отсутствии реальных доказательств) заключается в том, что в этих случаях связь происходит по именованным каналам, что намного медленнее между удаленными ПК.
источник