AG 與 DNN 接聽程式的功能互通性
提示
有許多方法可部署可用性群組。 在相同 Azure 虛擬網路內的多個子網路中建立 SQL Server 虛擬機器 (VM),您的 Always On 可用性群組就可以簡化部署,而且不再需要 Azure Load Balancer 或分散式網路名稱 (DNN)。 如果您已在單一子網路中建立可用性群組,您可以將它移轉至多子網路環境。
某些 SQL Server 功能相依於硬式編碼的虛擬網路名稱 (VNN)。 因此,搭配 Always On 可用性群組和單一子網路中 Azure VM 上的 SQL Server 使用分散式網路名稱 (DNN) 接聽程式時,可能會有一些其他考量。
本文詳細說明 SQL Server 功能與可用性群組 DNN 接聽程式的互通性。
行為差異
VNN 接聽程式與 DNN 接聽程式的功能之間有一些行為差異需要特別注意:
- 容錯移轉時間:使用 DNN 接聽程式時,容錯移轉時間會更快速,因為不需要等候網路負載平衡器偵測到失敗事件並變更其路由。
- 現有連線:與容錯移轉可用性群組中特定資料庫建立的連線將會關閉,但主要複本的其他連線則會保持開啟狀態,因為 DNN 會在容錯移轉過程中保持連線。 這與傳統的 VNN 環境不同,其中主要複本的所有連線通常會在可用性群組容錯移轉時關閉、接聽程式會離線,而且主要複本會轉換成次要角色。 使用 DNN 接聽程式時,您可能需要調整應用程式連接字串,以確保在容錯移轉時將連線重新導向至新的主要複本。
- 開啟的交易:針對容錯移轉可用性群組中的資料庫開啟之交易將會關閉並復原,而且您需要手動重新連線。 例如,在 SQL Server Management Studio 中,關閉查詢視窗,然後開啟新的查詢視窗。
用戶端驅動程式
若為 ODBC、OLEDB、ADO.NET、JDBC、PHP 和 Node.js 驅動程式,使用者必須明確指定 DNN 接聽程式名稱和連接埠作為連接字串中的伺服器名稱。 為了確保在容錯移轉時能快速連線,請將 MultiSubnetFailover=True
新增至連接字串 (如果 SQL 用戶端支援的話)。
工具
SQL Server Management Studio、sqlcmd、Azure Data Studio 和 SQL Server Data Tools 的使用者必須明確指定 DNN 接聽程式名稱和連接埠作為連接字串中的伺服器名稱,才能連線到接聽程式。
目前不支援透過 SQL Server Management Studio (SSMS) GUI 建立 DNN 接聽程式。
可用性群組和 FCI
您可以使用容錯移轉叢集執行個體 (FCI) 作為其中一個複本,來設定 Always On 可用性群組。 若要讓此設定可搭配 DNN 接聽程式運作,容錯移轉叢集執行個體也必須使用 DNN,因為沒有任何方法可將 FCI 虛擬 IP 位址放在 AG DNN IP 清單中。
在此設定中,FCI 複本的鏡像端點 URL 必須使用 FCI DNN。 同樣地,如果使用 FCI 作為唯讀複本,則 FCI 複本的唯讀路由必須使用 FCI DNN。
鏡像端點的格式為:ENDPOINT_URL = 'TCP://<FCI DNN DNS name>:<mirroring endpoint port>'
。
例如,如果您的 FCI DNN DNS 名稱為 dnnlsnr
,而且 5022
是 FCI 鏡像端點的連接埠,則用來建立端點 URL 的 Transact-SQL (T-SQL) 程式碼片段如下所示:
ENDPOINT_URL = 'TCP://dnnlsnr:5022'
同樣地,唯讀路由 URL 的格式為:TCP://<FCI DNN DNS name>:<SQL Server instance port>
。
例如,如果 DNN DNS 名稱為 dnnlsnr
,而 1444
是唯讀目標 SQL Server FCI 所使用的連接埠,則用來建立唯讀路由 URL 的 T-SQL 程式碼片段如下所示:
READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'
若為預設 1433 連接埠,您可以在 URL 中省略連接埠。 若為具名執行個體,請為具名執行個體設定靜態連接埠,並在唯讀路由 URL 中指定它。
分散式可用性群組
如果您使用分散式網路名稱 (DNN) 設定可用性群組接聽程式,則不支援在可用性群組之上設定分散式可用性群組。
複寫
異動、合併式和快照式複寫全都支援將 VNN 接聽程式取代為連線到接聽程式之複寫物件中的 DNN 接聽程式和連接埠。
如需如何搭配可用性群組使用複寫的詳細資訊,請參閱發行者和 AG、訂閱者和 AG 和散發者和 AG。
MSDTC
本機和叢集 MSDTC 都受到支援,但 MSDTC 會使用動態連接埠,這需要標準 Azure Load Balancer 設定 HA 連接埠。 因此,VM 必須使用標準 IP 保留,否則無法對網際網路公開。
請定義兩個規則,一個用於 RPC 端點對應程式連接埠 135,另一個用於實際的 MSDTC 連接埠。 在容錯移轉之後,若在新節點上變更 LB 規則,請將其修改為新的 MSDTC 連接埠。
如果 MSDTC 位於本機,請務必允許輸出通訊。
分散式查詢
分散式查詢依賴連結的伺服器,您可以使用 AG DNN 接聽程式和連接埠進行設定。 如果連接埠不是 1433,請在設定連結的伺服器時,在 SQL Server Management Studio (SSMS) 中選擇 [使用其他資料來源] 選項。
FILESTREAM
FILESTREAM 受到支援,但不適用於使用者使用 Windows 檔案 API 存取有限範圍檔案共用的情況。
FileTable
FileTable 受到支援,但不適用於使用者使用 Windows 檔案 API 存取有限範圍檔案共用的情況。
連結的伺服器
使用 AG DNN 接聽程式名稱和連接埠設定連結的伺服器。 如果連接埠不是 1433,請在設定連結的伺服器時,在 SQL Server Management Studio (SSMS) 中選擇 [使用其他資料來源] 選項。
常見問題集
哪個 SQL Server 版本提供 AG DNN 接聽程式支援?
SQL Server 2019 CU 8 和更新版本。
使用 DNN 接聽程式時,預期的容錯移轉時間為何?
針對 DNN 接聽程式,容錯移轉時間與 AG 容錯移轉時間相同,而不會有任何額外的時間 (例如使用 Azure Load Balancer 時的探查時間)。
若要支援 DNN 搭配 OLEDB 和 ODBC 使用,SQL 用戶端是否有任何版本需求?
建議為 DNN 接聽程式提供 MultiSubnetFailover=True
連接字串支援。 自 SQL Server 2012 (11.x) 起會開始提供。
使用 DNN 接聽程式時,是否需要任何 SQL Server 設定變更?
SQL Server 不需要任何組態變更即可使用 DNN,但某些 SQL Server 功能可能需要更多考量。
DNN 是否支援多重子網路叢集?
是的。 叢集會將 DNS 中的 DNN 繫結至可用性群組中所有複本的實體 IP 位址,而不論子網路為何。 SQL 用戶端會嘗試 DNS 名稱的所有 IP 位址,而不論子網路為何。
可用性群組 DNN 接聽程式是否支援唯讀路由?
是的。 DNN 接聽程式支援唯讀路由。