分享方式:


連線復原 (JDBC)

下載 JDBC 驅動程式

連線復原功能允許在限制內重新建立中斷的閒置連線。 如果初始連線失敗,連線復原功能也可讓驅動程式自動重試連線。 只有 SQL Server 2014 和更新版本以及 Azure SQL Database 支援重新連線中斷的閒置連線。 此功能從 Microsoft JDBC Driver 10.2.0 for SQL Server 開始可供使用。

連線重試

連線復原可分為兩個層面。 第一個是能夠透明地重試初始資料庫連線。 第二個是能夠透明地還原現有的閒置連線。 一般閒置連線可能是位於連線集區中的連線。 「閒置」連線通常是至少已閒置 30 秒的連線。 這些連線通常可由伺服器或用戶端與伺服器之間的網路裝置關閉。

JDBC 驅動程式有兩個用於控制連線復原行為的連線選項。 這些選項可新增至連接字串,或透過資料來源屬性來設定。

關鍵字 預設值 描述
connectRetryCount 介於 0 和 255 (含) 之間的整數 1 建立或重新建立連線的嘗試次數上限,超過即放棄。 預設只會嘗試重試一次。 值 0 表示不會嘗試重試。
connectRetryInterval 介於 1 和 60 (含) 之間的整數 10 嘗試重試連線的間隔時間 (秒)。 驅動程式會在偵測到中斷的閒置連線時立即嘗試重新連線,然後等候 connectRetryInterval 秒後再試一次。 如果 connectRetryCount 為 0,便會忽略此關鍵字。

如果 connectRetryCount 乘以 connectRetryInterval 的乘積大於 loginTimeout,則驅動程式會在達到 loginTimeout 之後停止嘗試連線。 否則就會繼續嘗試重新連線,直到已達 connectRetryCount 為止。

連線復原

為了偵測中斷的閒置連線,驅動程式依賴通訊端層級的 TCP KeepAlive 封包。 在 Linux 和 Java 11+ 上,驅動程式會以 30 秒為間隔 (KeepAliveTime) 自動啟用 KeepAlive 封包,並在發生失敗時延遲 1 秒再重試 (KeepAliveInterval)。

重要

在 Windows 和 macOS 或 Java 8 上,則必須在作業系統中手動設定 KeepAlive,才能利用中斷的閒置連線還原能力。 如需如何設定 KeepAlive 的資訊,請參閱 Azure SQL Database 的連線

限制

當發生下列情況時,無法還原中斷的閒置連線:

  • 有開啟但尚未完全剖析或緩衝處理的結果集
  • 針對 Azure SQL 切換資料庫
  • 有開啟的交易

另請參閱

連接到 Azure SQL Database
技術文章 – 閒置連線復原 (英文)
JDBC 驅動程式概觀