接続の回復性 (JDBC)

JDBC ドライバーのダウンロード

接続の回復性を使用すると、制限の範囲内で、切断されたアイドル状態の接続を再確立できます。 初期接続に失敗した場合は、接続の回復性によってドライバーに接続を自動的に再試行させることもできます。 切断されたアイドル状態の接続の再接続がサポートされているのは、SQL Server 2014 以降と Azure SQL Database に限られます。 この機能は、Microsoft JDBC Driver 10.2.0 for SQL Server 以降で使用できます。

接続の再試行

接続の回復性には 2 つの側面があります。 1 つ目は、最初のデータベース接続を透過的に再試行する機能です。 2 つ目は、既存のアイドル状態の接続を透過的に復元する機能です。 一般的なアイドル状態の接続は、接続プール内での接続設定である可能性があります。 "アイドル状態" の接続とは、通常、30 秒以上アイドル状態になっている場合のことをいいます。 これらの接続は、多くの場合、サーバー、またはクライアントとサーバー間のネットワーク デバイスによって切断される可能性があります。

JDBC ドライバーには、接続の回復性の動作を制御するための 2 つの接続オプションがあります。 これらのオプションは、接続文字列に追加することも、データソースのプロパティを介して設定することもできます。

Keyword Default 説明
connectRetryCount 0 から 255 までの整数 1 中止するまでに、接続の確立または再確立を試みる最大回数。 既定では、再試行が 1 回行われます。 値が 0 の場合、再試行は行われません。
connectRetryInterval 1 から 60 までの整数 10 接続再試行の間の時間 (秒単位)。 ドライバーでは、切断されたアイドル状態の接続を検出するとすぐに再接続を試み、その後、connectRetryInterval 秒待ってから、もう一度再試行します。 connectRetryCount が 0 である場合、このキーワードは無視されます。

connectRetryCountconnectRetryInterval を乗算した積が loginTimeout より大きい場合、ドライバーは loginTimeout に達した時点で接続の試行を一時停止します。 それ以外の場合は、connectRetryCount に達するまで再接続を試みます。

接続の回復

切断されたアイドル状態を検出するために、ドライバーはソケット レベルで TCP キープアライブ パケットに依存しています。 Linux および Java 11 以降の場合、ドライバーでは 30 秒間隔でキープアライブ パケットを自動的に有効にし (KeepAliveTime)。障害が発生した場合の再試行の間隔は 1 秒となります (KeepAliveInterval)。

重要

Windows および macOS、または Java 8 では、切断されたアイドル状態の接続を復元する機能を活用するために、オペレーティング システムでキープアライブを手動で構成する必要があります。 キープアライブの構成方法については、Azure SQL データベースへの接続に関するページを参照してください。

制限事項

次の場合、切断されたアイドル状態の接続は復元できません。

  • 開かれている結果セットの中に、完全に解析またはバッファリングされていないものがある
  • Azure SQL に対するデータベースの切り替え
  • 開いているトランザクションがある

関連項目

Azure SQL Database への接続
技術記事 – アイドル状態の接続の回復
JDBC ドライバーの概要