Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция устойчивости подключения позволяет возобновлять неактивное разорванное подключение в пределах ограничений. Если начальное подключение завершается сбоем, устойчивость подключения также позволяет драйверу автоматически повторить подключение. Восстановление неактивного разорванного подключения поддерживается только в 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 и Java 11 и для более ранних версий Java, keepalive-сообщения необходимо настроить вручную в операционной системе, чтобы воспользоваться преимуществами восстановления разорванных бездействующих подключений. Дополнительные сведения о настройке проверки активности см. в статье Подключение к Базе данных SQL Azure.
Ограничения
Неактивные разорванные подключения невозможно восстановить, если:
- Существует открытый результирующий набор, который не был до конца проанализирован или буферизован
- Базы данных переключаются в Azure SQL
- Существует открытая транзакция
См. также
Подключение к базе данных SQL Azure
Техническая статья — устойчивость неактивного подключения
Общие сведения о JDBC Driver