適用於:Azure SQL 受控實例
本文教你如何透過 受控執行個體 連結,將 Always On 可用性群組擴展到SQL Server與 Azure SQL 受控執行個體 之間的多個資料庫,使用SQL Server Management Studio(SSMS)、PowerShell 或 Azure CLI。
本文介紹 多資料庫連結模式,透過單一連結複製同一可用性群組中的所有資料庫。 單一資料庫連結模式每個連結會複寫一個資料庫。
Note
目前,在 SQL Server 與 Azure SQL 受控執行個體 之間的 Always On 可用性群組中連結多個資料庫的支援功能,仍處於預覽階段。
Overview
當你在 SQL Server 與 Azure SQL 受控執行個體 之間擴展 Always On 可用性群組時,你會建立一個連結,將多個可用性群組中的資料庫複製到目標副本。 該連結使用分散式可用性群組,將目前主要副本的變更幾乎即時複製到次要副本上的唯讀資料庫副本。 這可確保次要端上的唯讀副本會與主要端保持同步並維持最新狀態。
你可以使用現有的可用性群組,或是從獨立資料庫開始。 當你在 SSMS 中選擇獨立資料庫時,精靈會在初始主資料庫建立一個單一節點的可用性群組,並透過單一連結複製所選資料庫。
SQL Server 或 Azure SQL 受控執行個體 都可以作為初始的主要伺服器。 從 SQL 受管理執行個體 建立連結需要 SQL Server 2022 或 SQL Server 2025,並具備所需的累積更新及相應的 SQL 受管理執行個體 更新政策。 本文的建立範例是從 SQL Server 開始的。 文件中未說明如何從 SQL 受管理執行個體 開始建立。 支援在配置有相同更新政策的實例上,支援 SQL Server 與 Azure SQL 受控執行個體 之間角色互換的故障轉移。
保障性
以下要求適用於預覽期間透過多資料庫連結擴展可用性群組。 支援 Windows 與 Linux 上的 SQL Server。 您必須安裝所需的累積更新(CU)。 早期版本不支援這個功能。
| SQL Server 版本 | 所需的更新 | 支援的版本 |
|---|---|---|
| SQL Server 2022 (16.x) | CU27 或更新版本 | 企業與開發者 |
| SQL Server 2025 (17.x) | CU9 或更新版本 | 企業與開發者 |
請考慮下列事項:
- 標準版不被支援,因為基本可用性群組只支援一個資料庫。
- SQL Server 2019 及更早版本不支援多資料庫連結模式,因為它們缺乏 SQL Server 2022 引入的必要技術。
- 若要建立從 SQL 受管理執行個體 的連結,或將角色反轉回 SQL Server,您的 SQL 受管理執行個體 必須使用與 SQL Server 版本相符的更新原則。 若要單向複製並從 SQL Server 切換,目的更新政策必須與你的 SQL Server 版本相符或更高。
- SQL Server 2022 支援複製至已設定為 SQL Server 2022、SQL Server 2025 及 Always-up-to-date 政策的實例。
- SQL Server 2025 支援複寫到已設定為使用 SQL Server 2025 和 Always-up-to-date 原則的執行個體,但不支援 SQL Server 2022 原則。 如果政策不匹配,切換後你無法複製資料或 failback 到 SQL Server。
關於支援單一資料庫連結的 SQL Server 版本與版本,請參見 受控執行個體 連結版本支援性。
Caution
你可用性群組中的每個 SQL Server 副本必須使用相同支援的 SQL Server 版本,並安裝所需的累積更新或更新版本,並且啟用多資料庫連結模式。 不要把支援多資料庫連結模式的副本和早期版本或關閉該功能的副本混用。 混合這些配置會導致 SQL Server 行為變得不可預測。
先決條件
要在 SQL Server 與 Azure SQL 受控執行個體 之間擴展可用性群組,您需要以下先決條件:
- 有效的 Azure 訂用帳戶。 如果您還沒有帳戶,請建立免費帳戶。
- 支援的 SQL Server 版本與版本,並安裝了所需的服務更新。 你可以使用現有的 Always On 可用性群組,或是 SSMS 將這些資料庫放入新的單一節點可用性群組。 受限可用性群組不被支援。
- Azure SQL 受控執行個體 搭配符合您案例需求的更新原則。 當 SQL 受管理執行個體 是初始的主要執行個體,或發生角色對調時,必須有相符的原則。 如果你沒有 SQL 管理的實例,就開始吧。
- SQL Server Management Studio(SSMS)22.10.2 或更新版本。
- 腳本化配置的話,使用 Azure PowerShell 搭配 Az 模組版本 16.3.0 或更新版本,以及 Az.SQL 版本 7.1.0 或更新,或 Azure CLI 版本 2.90.0 或更新。 您也可以使用 Azure Cloud Shell。 確認已安裝的模組或 CLI 是否符合這些版本要求。
- 已正確備妥的環境。
- 對於多節點可用性群組,則有一個已設定的可用性群組監聽器。 設定連結時使用監聽者的 IP 位址,而非單一 SQL Server 複本的 IP 位址。 使用監聽器後,連結在本地可用性群組故障轉移後仍能繼續運作。
- 啟用多資料庫連結模式時,任何 SQL Server 副本都沒有現有連結。 在開始之前,移除所有使用舊單一資料庫連結模式的連結。
- 目標管理實例上有足夠的可用資料庫容量與儲存空間,以容納你可用性群組中的所有資料庫。 檢視 資源限制。
許可
SQL Server 需要系統 管理員 權限。
對於 Azure SQL 受管理實例,您需要是 SQL 受管理實例貢獻 者角色的成員,或擁有以下自訂角色權限:
| Microsoft.Sql/ 資源 | 必要權限 |
|---|---|
| Microsoft.Sql/managedInstances | /read 、 /write |
| Microsoft.Sql/managedInstances/hybridCertificate | /action |
| Microsoft。Sql/managedInstances/資料庫 | /read、/delete、/write、/completeRestore/action、/readBackups/action、/restoreDetails/read |
| Microsoft.Sql/managedInstances/distributedAvailabilityGroups | /read、/write、/delete、/setRole/action |
| Microsoft.Sql/managedInstances/endpointCertificates | /閱讀 |
| Microsoft.Sql/managedInstances/hybridLink | /read、/write、/delete |
| Microsoft.Sql/managedInstances/serverTrustCertificates | /寫入、/刪除、/讀取 |
啟用多資料庫連結模式
預覽期間預設關閉多資料庫連結模式。 利用內建sys.sp_multidb_milink的儲存程序,在可用性群組中的每個 SQL Server 副本上啟用,或在你計劃建立單一節點群組的 SQL Server 實例上啟用。
Warning
在啟用或停用多資料庫連結模式前,先移除所有現有連結。 在連結啟動時更改設定可能會導致 SQL Server 行為變得不可預測。 不要混用單一資料庫和多個資料庫連結。 切換模式時,先移除連結,改變每個 SQL Server 副本的設定,然後再建立新的連結。
對每個 SQL Server 副本執行以下指令以啟用多重資料庫連結模式:
EXEC sys.sp_multidb_milink 1;
這個設定會在 SQL Server 重啟後持續存在,所以你只需要在每個副本上啟用一次。
要檢查設定,請在每個副本上執行不設參數的儲存程序。 啟用0與停用時,會回傳1:
EXEC sys.sp_multidb_milink;
如果儲存程序無法使用,請確認副本是否已安裝支援的 SQL Server 版本及累積更新。
要停用多資料庫連結模式,首先移除所有連結,然後對每個 SQL Server 副本執行以下指令:
EXEC sys.sp_multidb_milink 0;
準備可用性群組資料庫
將你想複製的每個 SQL Server 資料庫設為完整的復原模型,然後建立完整備份。 無論是現有的可用性群組資料庫還是獨立資料庫,都需要這樣的準備。 請使用連結設定指南中的 SSMS 備份程序 。
Caution
如果你的資料庫使用 透明資料加密(TDE),請先在目的地準備加密憑證或金鑰,再建立連結。 沒有這些,連結就無法複製加密資料庫。
對於 SQL Server 資料庫,請將 TDE 憑證遷移到 SQL 受管理執行個體。 對於連結至 SQL Server 的加密 SQL 受管理執行個體 資料庫,請使用由客戶管理、可存取目標 SQL Server 的金鑰。 請查閱該連結的 TDE 準備,以了解各方向的要求。
連結會複製所選可用性群組中的所有資料庫。 你無法選擇子集,所以在建立連結前,請先確認目標 SQL 管理實例的可用容量。 目的地不得包含與你要複寫的資料庫同名的資料庫。 允許使用不同名稱的現有資料庫,但須依實例容量限制。
此連結僅支援使用者資料庫的複寫。 不支援複寫系統資料庫。 要複製儲存在 master 或 msdb中的實例層級物件,並用腳本將其輸出,並在目標實例上執行 T-SQL 腳本。
設定監聽器與憑證
對於多節點可用性群組,設定連結時應使用監聽者的 IP 位址,無論是在 SSMS 還是腳本中。 接聽程式會將連線導向至目前的主要複本。 不要使用單一 SQL Server 副本的 IP 位址作為連結的合作夥伴端點。 沒有監聽器,連線在本地可用性群組故障轉移後無法繼續運作。 對於單一節點的可用性群組,包括由 SSMS 精靈為獨立資料庫建立的群組,請使用該 SQL Server 實例的 IP 端點。
SSMS 精靈只會在 Azure SQL 受控執行個體與目前的 SQL Server 主要複本之間交換憑證。 它不會在其他 SQL Server 副本上設定憑證信任。 你必須在所有其他 SQL Server 複本上手動複製並設定所需的憑證,讓連結在本機可用性群組容錯移轉後仍能繼續運作。 此手動步驟適用於 SSMS 與腳本化設定。 檢視: 建立實例間的信任 ,以進行憑證交換步驟。
為以指令碼建立連結做好準備
建議使用 SSMS 來獲得建議的設定體驗。 精靈自動化了許多設定步驟。 如果你不需要腳本自動化,跳過這部分,直接進入擴展可用性群組的 SSMS 標籤。
腳本設定是一種進階選項,需要有經驗設定可用性群組、端點及憑證信任。 只有當你使用 PowerShell 或 Azure CLI,並以 SQL Server 作為初始主要工具時,才可完成這些步驟。
該清單涵蓋現有可用性群組及獨立資料庫。 在準備好資料庫、信任和端點後,重用現有的可用性群組,或在步驟 4 中建立一個。 接著建立分散式可用性群組。 PowerShell 和 Azure CLI 連結建立指令不會幫你建立可用性群組。
若要製作符合您環境的腳本,請使用 SSMS 連結嚮導,並在摘要頁面選擇腳本。 檢視產生的腳本並分別執行。
- 在每個 SQL Server 副本或獨立的 SQL Server 實例上啟用多資料庫連結模式,並準備資料庫。
- 建立實例之間的信任。 請依照憑證建立、公鑰交換、根憑證匯入及憑證鏈驗證步驟操作。 對於多節點群組,應將憑證要求套用到每個 SQL Server 副本,而非僅限於目前的主要副本。
- 保護資料庫鏡像端點。 如果你的可用性群組已經有端點,建議用 Alter 現有端點 ,而不是再建立一個。 保留已設定的端點埠以執行連結建立指令。
- 準備可用性群組。 如果你已經有一個包含所有想複製資料庫的可用性群組,請重複使用該群組,並跳過建立新群組。 如果你從獨立資料庫開始,先在 SQL Server 上建立一個可用性群組。 在 SQL Server 初始主分頁中,使用單節點
CREATE AVAILABILITY GROUP範例,但CLUSTER_TYPE = NONE以完整的資料庫清單替換FOR DATABASE [<DatabaseName>],例如FOR DATABASE [DB01], [DB03], [DB05], [DB07]。 設定<AGNameOnSQLServer>為你想給新群組的名稱。 在繼續建立分散式可用性群組之前,先執行此腳本。 不要對現有群組執行或更改現有群組的叢集設定。 -
在 SQL Server 上建立分散式可用性群組。 使用 SQL Server 初始主要複本 索引標籤,並從建立分散式可用性群組的指示開始。 設定
<AGNameOnSQLServer>為你在前一步重複使用或建立的可用群組。 對於多節點群組,請使用監聽程式的 IP 位址作為<SQLServerIP>。 對於單一節點群組,請使用 SQL Server 實例的端點。 在下方的建立命令中,將<DAGName>保留為連結名稱,並將<AGNameOnSQLMI>保留為受控執行個體可用性群組名稱。 - 確認 SQL Server 上的可用性群組。 確認 Always On 可用性群組與分散式可用性群組皆存在。 接著回到擴展可用性群組,選擇 PowerShell 或 Azure CLI,並執行本文中的多資料庫建立指令,取代另一指南的單一資料庫指令。
擴充可用性群組
為了保留做種所需的日誌記錄,建議在建立連結前,先在支援的 SQL Server 建置上啟用追蹤旗標 12381,特別是在大型資料庫或多資料庫連結模式下。 不過,這個旗標並非必須的,且有其他緩解措施,詳見 故障排除錯誤 1412。 啟用旗標後,日誌備份可以繼續,但保留的日誌記錄不會變得可重複使用。 監控 SQL Server 記錄檔的成長情況與可用磁碟空間,並在正在建立的所有連結都完成植入後立即停用該旗標。
使用 SSMS 來自動化建立連結,或選擇 PowerShell 或 Azure CLI 進行進階腳本化設定。 以下範例以 SQL Server 作為初始主伺服器。 你也可以從 SQL 受管理執行個體 開始,搭配匹配更新策略,但這裡沒有涵蓋建立工作流程。
對於腳本設定,先完成腳本設定步驟,重用或建立包含所有你想複製資料庫的可用性群組,然後在執行 PowerShell 或 Azure CLI 建立指令前,建立分散式可用性群組。 或者,如果你從獨立資料庫開始,本節的 SSMS 程序會在連結建立時自動建立單節點可用性群組。
多資料庫連結模式,請在腳本中明確指定 MultiDatabase 並提供 可用性群組中的所有資料庫名稱 。 如果 -LinkMode 被省略,PowerShell 預設為 SingleDatabase 。 請在 PowerShell 中使用 --link-mode MultiDatabase,或在 Azure CLI 中使用 -LinkMode MultiDatabase。
Warning
除非每個 SQL Server 複本都已安裝所需的累積更新,並已透過 MultiDatabase 預存程序啟用多資料庫連結模式,否則請勿使用 sys.sp_multidb_milink 連結模式建立連結。 如果在不支援 SQL Server 的編譯中使用此模式,可能會導致 SQL Server 行為變得不可預測。 先檢視 支援性 並 啟用多資料庫連結模式 。
在 SSMS 中使用 New SQL 受管理執行個體 連結精靈,從現有的可用性群組或獨立資料庫建立連結到 Azure SQL 受控執行個體。
打開 SSMS 並連接到 SQL Server。 對於多節點可用性群組,請透過聆聽者的 IP 位址連接。 對於獨立資料庫或單一節點群組,請連接 SQL Server 實例。
在 物件總管 中,右鍵點擊你想複製的資料庫,將滑鼠移到 Azure SQL 受控執行個體 連結上,然後選擇「新...」以開啟「New SQL 受管理執行個體 連結向導」。
在精靈的 [簡介] 頁面上,選取 [下一步]。
在 「指定連結選項 」頁面,確認是否啟用多資料庫連結模式,並提供連結名稱。 模式核取方塊是唯讀的:它會反映 SQL Server 上的
sys.sp_multidb_milink設定。 你無法透過勾選勾選方塊來啟用該模式。 如果該模式未啟用,請檢查 SQL Server 版本和累積更新,並在繼續前在所有副本上啟用此功能。 連結名稱使用小寫字母。 除了開頭或結尾外,允許使用連字號。 選取 下一步。在 [需求] 頁面上,精靈程式會驗證需求以建立到您的次要實體的連結。 在驗證所有需求之後選取 [下一步],或解決不符合的任何需求,然後選取 [重新執行驗證]。
在 「選擇資料庫」 頁面,選擇現有可用性群組或獨立資料庫:
- 選擇 AG01 以複製其所有資料庫,例如 DB01、 DB03、 DB05 和 DB07。
- 或者選擇獨立的 DB10 和 DB11。 啟用多資料庫連結模式後,SSMS 會在目前的 SQL Server 實例建立單一節點的可用性群組,將兩個資料庫放入其中,並透過單一連結複製它們。
檢視選取,然後選擇 「下一步」。
在 「指定次要副本 」頁面,選擇 新增次要副本。 如果 SQL 管理的實例是你的次要實例,請登入 Azure,選擇訂閱、資源群組和次要 SQL 管理實例來連接你的實例。
檢視端點設定並完成剩餘驗證步驟,詳見 「配置與 SSMSS 連結」。
在 [摘要] 頁面,再次檢閱您的設定。 可選擇「 腳本 」來產生腳本。 當您準備好建立連結時,請選取 [完成]。
完成所有步驟之後,[結果] 頁面會在成功完成的動作旁顯示勾號。 您現在可以關閉視窗。
多資料庫模式透過一個連結複製你可用性群組中的資料庫。 此方法與單資料庫模式中選擇多個資料庫不同,後者為每個資料庫建立獨立連結。
驗證複製
建立連結或新增資料庫後,資料會從目前的主副本複製到目前的次要副本。 SQL Server 或 Azure SQL 受控執行個體 都可以作為初始的主要伺服器。 角色互換後,資料會朝相反方向複製。 根據資料庫大小與網路速度,每個資料庫可能在次要副本上初始處於 還原 狀態。 初始植入完成後,資料庫會還原至次要複本,並且已可供唯讀工作負載使用。
在任一副本上,使用 SSMS 中的 物件總管 查看每個複製資料庫的同步狀態。 展開 Always On 高可用性 和 可用性群組,即可檢視為此連結建立的分散式可用性群組。
當 SQL Server 是主要伺服器時,只要支援的建置中啟用追蹤旗標 12381,你可以在做種時繼續交易日誌備份。 如果你為了避免過早截斷而暫停日誌備份,請在初始播種結束後恢復備份。 對於沒有日誌備份排程的資料庫,請只在初始做種結束後進行第一次 交易日誌備份 ,而非在做種時備份。 所有正在建立的連結都完成植入後,如果您已啟用該旗標,請停用該旗標,並在 SQL Server 仍為主要資料庫時定期進行SQL Server 交易記錄備份。 當 Azure SQL 受控執行個體 是主要實例時,它會自動備份交易日誌。 當 SQL Server 處於次要角色時,您不需要為這些資料庫手動備份 SQL Server 交易記錄。
在 seeding 期間,若交易記錄檔遭到過早截斷,可能會導致 SQL 受管理執行個體 錯誤記錄中出現錯誤 1408 和 1412。 在支援它的建置中,trace flag 12381 可以防止這種截斷。 在所有正在建立的連結完成植入後,請停用它,並在啟用期間監控交易記錄檔的使用量、成長速率和可用磁碟空間。 日誌備份可以持續進行,而所需紀錄則會被保留。 這種保留功能並不能取代播種後的一般日誌備份。 請參見 防止過早截斷對數。
新增資料庫
使用 SSMS 精靈新增來自目前主要執行個體的資料庫,不論其為 SQL Server 或 SQL 受管理執行個體。 精靈會自動完成必要的變更。 進階自動化的話,請使用 PowerShell 或 Azure CLI。 新增資料庫在主端只需一次操作。
在新增資料庫前,請確認現有連結是否使用多資料庫連結模式,且目的地有足夠的資料庫容量與儲存空間,且沒有與新資料庫衝突的現有資料庫名稱。 當 SQL Server 是主要時,將每個尚未在可用性群組中的新資料庫設為完整復原模型,並使用 SSMS 備份程序建立完整備份。
新增具備 SSMS 的資料庫
使用「Add Database to Azure SQL 受控執行個體 Link」向導,將資料庫加入現有的多資料庫連結:
在 SSMS 中連接到目前的主節點。 在 物件總管 中,展開 Always On High Availability 與 可用性群組。
右鍵點擊你連結的分散可用性群組,將滑鼠移到「Azure SQL 受控執行個體」連結上,然後選擇「新增資料庫...」。
請繼續瀏覽介紹和 Azure 登入,然後在「選擇連結」頁面選擇你的多資料庫連結。
在 「選擇資料庫」 頁面,選擇你想新增的資料庫。 你只能新增具備 Ready 狀態的資料庫。 連結中已存在的資料庫會顯示為 已包含於所選連結中。 在繼續之前,先解決任何資格問題。
完成 驗證 與審查 摘要。 選擇 完成 來執行變更,或選擇 腳本 產生腳本而不執行變更,這樣你可以分別檢視、自訂並執行。 如果你在精靈中執行變更,關閉前請先檢視 結果 。
新增帶有腳本的資料庫
在目前的主要節點上執行新增操作。 請依照該情況的說明操作。
當 SQL Server 是主要伺服器時
使用 T-SQL 將 每個資料庫加入可用性群組。 連結會將新增內容傳播到 SQL 受管理執行個體。 不需要針對 SQL 受管理執行個體 採取任何進一步動作。 不要為此新增內容執行 PowerShell 或 Azure CLI 更新。
當 SQL 受管理執行個體 是主要時
使用 PowerShell 或 Azure CLI 來更新 SQL 受管理執行個體 上的連結。 該連結會自動將新增的資料庫傳播到可用性群組。 不需要在 SQL Server 上做額外的步驟。 提供 完整的預定會員名單,包括你想保留的所有現有資料庫及新資料庫。 所提供的名單取代了現有會員名單。 省略資料庫會將其從連結成員資格中移除。
例如,當連結已經包含 DB09、DB07、DB05 和 DB03 時,若要加入 DB09,請在清單中保留這四個名稱,並另外將 DB01 也加入清單中。 用你的數值替換資源和資料庫名稱。
| PowerShell 變數 | Azure CLI 變數 | Description |
|---|---|---|
$ResourceGroup |
ResourceGroupName |
包含 SQL 管理實例的資源群組。 |
$ManagedInstanceName |
ManagedInstanceName |
承載連結的 SQL 管理實例名稱。 |
$DAGName |
DAGName |
現有連結名稱,與建立時使用的分散式可用性群組名稱相符。 |
$DatabaseNames |
DatabaseNames |
需保留的現有資料庫與要新增的新資料庫完整清單。 該範例保留 DB01、 DB03、 DB05和 DB07,並加上 DB09。 |
在PowerShell中使用 Update-AzSqlInstanceLink 。 沿用建立時的 $ResourceGroup、$ManagedInstanceName 和 $DAGName,或將它們設定為您要更新的資源群組、執行個體和連結:
# Include every existing database to retain and each new database to add.
$DatabaseNames = @("DB01", "DB03", "DB05", "DB07", "DB09")
Update-AzSqlInstanceLink -ResourceGroupName $ResourceGroup -InstanceName $ManagedInstanceName -Name $DAGName -Database $DatabaseNames
對每個新加入的資料庫重複執行 複寫驗證步驟。 只有在 SQL Server 是主要時,才依照手動日誌備份步驟操作。
移除資料庫
使用目前主艦的 SSMS 精靈,自動在雙方移除。 移除資料庫需要從 SQL 受管理執行個體 的連結及可用性群組中移除該資料庫。 只拆一邊並不能完成整個操作。
Warning
如果你在 SQL 受管理執行個體 的連結中移除資料庫,但保留在可用性群組,該可用性群組就會變得不健康。 兩側皆完全移除。 若要透過指令碼移除,請依照你目前使用的主要項目所對應的章節操作。
移除帶有 SSMS 的資料庫
無論以 SQL Server 或 SQL 受管理執行個體 為主要,以下步驟皆適用:
在 SSMS 中連接到目前的主節點。 在 物件總管 中,展開 Always On High Availability 與 可用性群組。
右鍵點擊該連結的分散可用性群組,將滑鼠移到Azure SQL 受控執行個體連結上,然後選擇「移除資料庫...」。
在「從 Azure SQL 受控執行個體 連結移除資料庫」向導中,透過介紹和 Azure 登入,然後選擇「選擇連結」中的連結。
在 選擇資料庫時,選擇要移除的資料庫。 例如,選擇 DB05 將其從連結中移除,然後選擇 「下一步」。
完成 驗證、檢視 摘要,然後選擇 完成 來執行移除,或先用 腳本 檢查產生的指令。 關閉精靈前請檢查 結果 是否成功完成。
移除帶有腳本的資料庫
兩個實例都移除資料庫。 目前的主實例決定先更新哪個實例。
PowerShell 與 Azure CLI 範例使用以下變數:
| PowerShell 變數 | Azure CLI 變數 | Description |
|---|---|---|
$ResourceGroup |
ResourceGroupName |
包含 SQL 管理實例的資源群組。 |
$ManagedInstanceName |
ManagedInstanceName |
承載連結的 SQL 管理實例名稱。 |
$DAGName |
DAGName |
現有連結名稱,與建立時使用的分散式可用性群組名稱相符。 |
$DatabaseNames |
DatabaseNames |
要保留的資料庫完整清單,不包含要移除的資料庫。 範例包含排除DB05並保留 DB01、 DB03、 DB07DB09、 。 |
當 SQL Server 是主要伺服器時
- 使用 T-SQL 將 資料庫從可用性群組中移除。
- 請使用 PowerShell 或 Azure CLI 移除 SQL 受管理執行個體 連結中的資料庫,如本節所示。
在 SQL 受管理執行個體 步驟,提供完整的資料庫清單,只保留你想移除的。 例如,若連結包含 DB01、 DB03、 DB05、 DB07和 DB09,以下指令會移除 DB05 並保留其他四個。 用你的數值替換資源和資料庫名稱。
使用 Update-AzSqlInstanceLink。 重用 $ResourceGroup、 $ManagedInstanceName、 $DAGName 創建後,或將它們設為你想更新的資源群組、實例和連結:
# Include only the databases to retain, excluding DB05.
$DatabaseNames = @("DB01", "DB03", "DB07", "DB09")
Update-AzSqlInstanceLink -ResourceGroupName $ResourceGroup -InstanceName $ManagedInstanceName -Name $DAGName -Database $DatabaseNames
當 SQL 受管理執行個體 是主要時
- 請使用 PowerShell 或 Azure CLI 移除 SQL 受管理執行個體 連結中的資料庫,如本節所示。
- 在 SQL Server 上使用 T-SQL 將資料庫從其可用性群組中移除。 移除工作只有完成這個步驟才算完成。
在 SQL 受管理執行個體 步驟,提供完整的資料庫清單,只保留你想移除的。 例如,若連結包含 DB01、 DB03、 DB05、 DB07和 DB09,以下指令會移除 DB05 並保留其他四個。 用你的數值替換資源和資料庫名稱。
使用 Update-AzSqlInstanceLink。 重用 $ResourceGroup、 $ManagedInstanceName、 $DAGName 創建後,或將它們設為你想更新的資源群組、實例和連結:
# Include only the databases to retain, excluding DB05.
$DatabaseNames = @("DB01", "DB03", "DB07", "DB09")
Update-AzSqlInstanceLink -ResourceGroupName $ResourceGroup -InstanceName $ManagedInstanceName -Name $DAGName -Database $DatabaseNames
確認被移除的資料庫已不再屬於連結或可用性群組。 將資料庫從複製中移除並不等同於刪除其保留的副本。 在決定是否刪除不再需要的副本前,請先檢視兩個實例的資料庫。
故障轉移或切換到 Azure
利用 SSMS 或腳本中的現有故障轉移程序,在 SQL Server 與 Azure SQL 受控執行個體 之間反轉角色。 角色反轉要求 SQL 管理的實例使用與你 SQL Server 版本相符的更新策略。 若要單向複寫並切換到 Azure SQL 受控執行個體,其更新政策必須與你的 SQL Server 版本相符或更高。 如果原則不相符,您將無法複寫資料,或之後容錯移轉回 SQL Server。 檢視支援的組合。 關於遷移與切換指引,請參見 「連結遷移」。
監視複寫並疑難排解
請使用以下動態管理檢視(DMV)及 SQL Server 目錄檢視,檢查主要可用性群組、副本連線性及每個資料庫的複寫健康狀況:
| View | 資訊 |
|---|---|
| sys.availability_groups | 可用性群組,不包括內部每一資料庫的複寫群組。 |
| sys.dm_hadr_availability_replica_states | 主群組及內部各個資料庫複寫群組的角色、連線能力與同步健康狀況。 |
| sys.dm_hadr_database_replica_states | 資料庫層級的複製狀態與同步健康。 |
sys.dm_hadr_internal_availability_groups |
為多個資料庫連結模式下的個別資料庫建立內部複製群組。 |
sys.dm_hadr_internal_availability_replicas |
在多資料庫連結模式中,屬於內部各資料庫複寫群組的複本。 |
SELECT * FROM sys.availability_groups;
SELECT * FROM sys.dm_hadr_availability_replica_states;
SELECT * FROM sys.dm_hadr_database_replica_states;
SELECT * FROM sys.dm_hadr_internal_availability_groups;
SELECT * FROM sys.dm_hadr_internal_availability_replicas;
如果內部複寫 DMV 無法使用,或執行 sys.sp_multidb_milink 預存程序時回報其無法使用,請確認該複本上已安裝的 SQL Server 版本及累積更新。 如需針對一般連線與複寫進行疑難排解,請參閱疑難排解受控執行個體連結。
Limitations
在透過多資料庫連結擴展可用性群組時,請考慮以下限制:
- 連結名稱必須使用小寫字母。 允許使用連字號,但名字不能以連字號開頭或結尾。
- 當連結以多資料庫模式啟用時,請勿將任何 SQL Server 複本降級至低於 SQL Server 2022 CU27 或 SQL Server 2025 CU9 的版本,視適用情況而定。 降級到低於所需 CU 可能會造成無法預測的問題,即使沒有備援。
- 受限可用性群組不被支援。
- 單一資料庫連結和多個資料庫連結不能共存於同一個 SQL Server 實例上。
- 你無法在原地更改連結的模式。 若要在單一資料庫與多資料庫連結模式間切換,請移除所有現有連結,並在每個 SQL Server 副本上更改模式,然後在新模式下重新建立連結。
- 當你為現有的可用性群組建立連結時,該群組內的所有資料庫都必須被複製。 你不能只選擇該群組中部分資料庫。
- 目標 SQL 管理實例剩餘的資料庫容量限制了你可複製的資料庫數量。 通用與商業關鍵支援每個實例最多 100 個資料庫,次世代通用則支援最多 500 個。 現有資料庫也計入這些限制。 例如,一個資料庫數量限制為 100 個且現有資料庫有 10 個的實例,容量可增加 90 個。 欲了解更多資訊,請參閱 資源限制。
- 在 SQL Server 上,將資料庫新增至可用性群組時,若超過目標 SQL 受控執行個體的可用資料庫容量上限,作業仍可能成功;但複寫到 SQL 受控執行個體時會失敗。 此狀況可能導致連結處於不一致狀態,需手動移除未複製的資料庫從可用性群組中移除。
- 新增資料庫會透過連結傳遞,但移除一側的資料庫並不會自動移除另一側的資料庫。 如果你從可用性群組移除資料庫,其副本仍會留在 SQL 受管理執行個體 上。 如果你在 SQL 受管理執行個體 的連結中移除資料庫,該資料庫仍留在可用性群組中,無需透過連結複製,且需要手動清理。
- 透過 SSMS 將資料庫加入現有連結時,只能新增具備 Ready 狀態的資料庫。 你不能新增屬於其他可用群組或目的地名稱已存在的資料庫。