共用方式為


Azure SQL 受控執行個體連線類型

適用於:Azure SQL 受控執行個體

本文將說明用戶端如何根據連線類型來連線到 Azure SQL 受控執行個體。 以下提供變更連線類型的指令碼範例,以及變更預設連線設定的相關考量。

連線類型

Azure SQL 受控執行個體的 VNet 本地端點支援下列兩個連線類型:

  • 重新導向 (建議): 這是 SQL 用戶端連線到受控執行個體的慣用方式。 透過重新導向,用戶端可直接與託管資料庫的節點建立連線。 若要啟用重新導向,需要設定防火牆和網路安全性群組 (NSG),以允許在連接埠 1433 和連接埠範圍 11000-11999 上進行存取。 相較於代理,重新導向表現出優越的延遲和輸送量效能。 重新導向還可將閘道元件計劃性維護事件的影響將至最低,因為重新導向連線一旦建立,就不再依賴閘道。 重新導向功能依靠 SQL 驅動程式來了解 TDS (表格式資料流) 7.4 或更新版本。 TDS 7.4 首次與 Microsoft SQL Server 2012 一起發行,因此比這更新的任何用戶端都能夠運作。
  • 代理 (預設):這是舊版連線機制,旨在支援實作 7.4 版之前的 TDS 版本的 SQL 驅動程式。 在此模式中,所有連線都會透過內部閘道進行代理,而且只需要開啟連接埠 1433。 在 Proxy 方法中,閘道會處理指示,以找出主要 SQL 復本節點以轉送連線。 根據此工作負載的性質,網關可能會瓶頸連線。 Proxy 模式可能會嚴重降低延遲,而且相較於重新導向,輸送量會降低,因為網關元件的計劃性維護事件較容易失去即時連線。 基於這個理由,強烈建議您將所有受控實例設定為使用重新導向連線原則,除非您的 SQL 用戶端不支援 TDS 重新導向。

請注意,重新導向選項只會對 VNet 本機端點產生影響。 Azure SQL 受控執行個體的公用端點和私人端點一律在代理模式中運作。

重要

強烈建議將所有受控實例設定為使用重新導向連線原則,但 SQL 用戶端不支援 TDS 重新導向時除外。

重新導向連線類型

在重新導向連線類型中,在對 SQL 引擎建立 TCP 工作階段之後,用戶端工作階段會從負載平衡器取得虛擬叢集節點的目的地虛擬 IP。 後續的封包會直接流向虛擬叢集節點,並略過閘道。 下圖說明此流量。

此圖顯示內部部署網路,其中重新導向-find-db 已連線至 Azure 虛擬網路中的閘道,以及連線至虛擬網路中資料庫主要節點的重新導向查詢。

重要

重新導向連線類型目前僅影響 VNet 本機端點。 不論連線類型設定為何,經由公用或私人端點的連線都會使用代理連線類型來處理。

Proxy 連線類型

警告

只有不支援表格式資料流 (TDS) 標準 7.4 或更新版本 (自 SQL Server 2012 起提供) 的舊版用戶端和應用程式才建議使用代理連線類型。 受控執行個體應設定為盡可能使用重新導向連線類型。

在 Proxy 連線類型中,系統會使用閘道建立 TCP 工作階段,且所有後續封包都會流經此閘道。 下圖說明此流量。

此圖顯示內部部署網路,其中 proxy 已連線至 Azure 虛擬網路中的閘道,連線至虛擬網路中資料庫主要節點。

變更連線類型

  • 使用入口網站:若要使用 Azure 入口網站來變更連線類型,請開啟 [虛擬網路] 頁面,並使用 [連線類型] 設定來變更連線類型,並儲存變更。

  • 使用 PowerShell 變更連線類型設定的指令碼:

注意

本文使用 Azure Az PowerShell 模組,這是與 Azure 互動時建議使用的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。

下列 PowerShell 指令碼說明如何將受控執行個體的連線類型變更為 Redirect

Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
# Get your SubscriptionId from the Get-AzSubscription command
Get-AzSubscription
# Use your SubscriptionId in place of {subscription-id} below
Select-AzSubscription -SubscriptionId {subscription-id}
# Replace {rg-name} with the resource group for your managed instance, and replace {mi-name} with the name of your managed instance
$mi = Get-AzSqlInstance -ResourceGroupName {rg-name} -Name {mi-name}
$mi = $mi | Set-AzSqlInstance -ProxyOverride "Redirect" -force

下一步