Устойчивость подключения (JDBC)

Скачать драйвер JDBC

Функция устойчивости подключения позволяет возобновлять неактивное разорванное подключение в пределах ограничений. Если начальное подключение завершается сбоем, устойчивость подключения также позволяет драйверу автоматически повторить попытку подключения. Восстановление неактивного разорванного подключения поддерживается только в SQL Server 2014 и более поздних версиях, а также в Базе данных SQL Azure. Эта функция доступна начиная с версии 10.2.0 Microsoft JDBC Driver для SQL Server.

Повторные попытки подключения

Устойчивость подключения может выполняться двумя способами. Она может явным образом восстановить начальное подключение к базе данных. Она также может явным образом восстановить существующее неактивное подключение. Его типичным примером является подключение в пуле подключений. Подключение считается неактивным, если оно бездействовало в течение как минимум 30 секунд. Такие подключения часто закрываются сервером или сетевыми устройствами между клиентом и сервером.

У драйвера JDBC есть два параметра подключения, которые управляют поведением устойчивости. Эти параметры можно добавить в строку подключения или задать через свойства источника данных.

Ключевое слово Значения По умолчанию Описание
connectRetryCount Целое число от 0 до 255 (включительно). 1 Максимальное число попыток восстановить подключение, при достижении которого их следует прекратить. По умолчанию совершается одна попытка восстановления. Если задать значение 0, попытка предприниматься не будет.
connectRetryInterval Целое число от 1 до 60 (включительно). 10 Время между попытками повторного подключения (в секундах). Драйвер попытается повторно подключиться сразу после обнаружения неактивного разорванного подключения, а затем будет ждать connectRetryInterval секунд, прежде чем повторить попытку. Если для connectRetryCount задано значение 0, это ключевое слово игнорируется.

Если результат умножения connectRetryCount и connectRetryInterval превышает loginTimeout, драйвер прекратит попытки возобновить подключение при достижении loginTimeout. В противном случае он будет продолжать попытки до момента достижения connectRetryCount.

Восстановление подключения

Для обнаружения неактивных разорванных подключений драйвер использует пакеты проверки активности TCP на уровне сокета. При возникновении сбоя на Linux и Java 11+ драйвер автоматически включает пакеты проверки активности с 30-секундным интервалом (KeepAliveTime) и задержкой в 1 секунду (KeepAliveInterval) между попытками восстановления.

Важно!

На Windows и macOS, а также на Java 8 проверку активности необходимо настраивать вручную, чтобы иметь возможность восстанавливать неактивные разорванные подключения. Дополнительные сведения о настройке проверки активности см. в статье Подключение к Базе данных SQL Azure.

Ограничения

Неактивные разорванные подключения невозможно восстановить, если:

  • Существует открытый результирующий набор, который не был до конца проанализирован или буферизован
  • Базы данных переключаются в Azure SQL
  • Существует открытая транзакция

См. также

Подключение к базе данных SQL Azure
Техническая статья — устойчивость неактивного подключения
Общие сведения о JDBC Driver