Попытка установить соединение JDBC от клиента (Windows Server 2012) к серверу (MSSQL Server 2012 SP2, размещенный на Windows Server) приводит к этой ошибке:
Истекло время ожидания соединения.Период ожидания истек при попытке использовать подтверждение рукопожатия перед входом в систему.Это может быть связано с тем, что рукопожатие перед входом в систему не удалось или сервер не смог ответить вовремя.Длительность попытки подключения к этому серверу составила - [Pre-Login] initialization = 273;квитирование = 29736;(Microsoft SQL Server, ошибка: -2)
Анализ трассировки пакетов:
После квитирования TCP клиент отправляет TDS pre-пакет входа в систему на сервер, но с байтами, представляющими версию, все установлены в 0. Сервер не отвечает (хотя протокол указывает , сервер ДОЛЖЕН ответить в некотором роде), поэтому клиентповторно передает и в конечном итоге клиент отправляет сброс TCP на сервер.
Дополнительные сведения:
- Порт 1433 открыт как на клиенте, так и на сервере.
- Никакая сеть или программное обеспечение не фильтрует трафик с клиентак серверу.
- Подключение к серверу успешно с других компьютеров в других доменах с использованием одной и той же строки подключения.
- Подключение к клиенту на сервере успешно на уровне канала передачи данных (проверено с использованием канала передачи данных)Редактор).
- TCP / IP включен для IPv4 и IPv6 как на клиенте, так и на сервере.
- TLS включен на обоих серверах.
- Мы пробовали 3 разных JDBCдрайверы, использующие Squirrel SQL & MSSQL Server Management Studio.Все предоставляют одну и ту же ошибку.Драйверы ссылаются на правильные библиотеки DLL.
- Tracert от клиента к серверу успешно завершен.
- Мы попытались изменить строку подключения, чтобы повысить доверие к сертификации сервера, принудительное шифрование, увеличить значение времени ожидания подключения.до нескольких минут и т. д.
- .NET 4.5 используется на клиенте, но .NET 4.5 также используется на других машинах, которые могут успешно подключиться к серверу.
Что можетбыть проблемой?У меня нет идей.