接続の回復性 (JDBC)
接続の回復性を使用すると、制限の範囲内で、切断されたアイドル状態の接続を再確立できます。 初期接続に失敗した場合は、接続の回復性によってドライバーに接続を自動的に再試行させることもできます。 切断されたアイドル状態の接続の再接続がサポートされているのは、SQL Server 2014 以降と Azure SQL Database に限られます。 この機能は、Microsoft JDBC Driver 10.2.0 for SQL Server 以降で使用できます。
接続の再試行
接続の回復性には 2 つの側面があります。 1 つ目は、最初のデータベース接続を透過的に再試行する機能です。 2 つ目は、既存のアイドル状態の接続を透過的に復元する機能です。 一般的なアイドル状態の接続は、接続プール内での接続設定である可能性があります。 "アイドル状態" の接続とは、通常、30 秒以上アイドル状態になっている場合のことをいいます。 これらの接続は、多くの場合、サーバー、またはクライアントとサーバー間のネットワーク デバイスによって切断される可能性があります。
JDBC ドライバーには、接続の回復性の動作を制御するための 2 つの接続オプションがあります。 これらのオプションは、接続文字列に追加することも、データソースのプロパティを介して設定することもできます。
Keyword | 値 | 既定 | 説明 |
---|---|---|---|
connectRetryCount |
0 から 255 までの整数 | 1 | 中止するまでに、接続の確立または再確立を試みる最大回数。 既定では、再試行が 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 では、切断されたアイドル状態の接続を復元する機能を活用するために、オペレーティング システムでキープアライブを手動で構成する必要があります。 キープアライブの構成方法については、Azure SQL データベースへの接続に関するページを参照してください。
制限事項
次の場合、切断されたアイドル状態の接続は復元できません。
- 開かれている結果セットの中に、完全に解析またはバッファリングされていないものがある
- Azure SQL に対するデータベースの切り替え
- 開いているトランザクションがある