Устойчивость подключения (JDBC)
Функция устойчивости подключения позволяет возобновлять неактивное разорванное подключение в пределах ограничений. Если начальное подключение завершается сбоем, устойчивость подключения также позволяет драйверу автоматически повторить подключение. Восстановление неактивного разорванного подключения поддерживается только в SQL Server 2014 и более поздних версиях, а также в Базе данных SQL Azure. Эта функция доступна начиная с версии 10.2.0 Microsoft JDBC Driver для SQL Server.
Повторные попытки подключения
Устойчивость подключения может выполняться двумя способами. Она может явным образом восстановить начальное подключение к базе данных. Она также может явным образом восстановить существующее неактивное подключение. Его типичным примером является подключение в пуле подключений. Подключение считается неактивным, если оно бездействовало в течение как минимум 30 секунд. Такие подключения часто закрываются сервером или сетевыми устройствами между клиентом и сервером.
У драйвера JDBC есть два параметра подключения, которые управляют поведением устойчивости. Эти параметры можно добавить в строку подключения или задать через свойства источника данных.
Ключевое слово | Values | По умолчанию. | Description |
---|---|---|---|
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