共用方式為


準備您的環境以供連結:Azure SQL 受控執行個體

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

本文說明如何準備受控執行個體連結的環境,以便在安裝至 Windows 或 Linux 的 SQL Server 與 Azure SQL 受控執行個體之間複寫。

注意

您可以使用可下載的指令碼,自動讓環境為受控執行個體連結做好準備。 如需詳細資訊,請參閱自動化連結設定部落格

必要條件

若要在 SQL Server 和 Azure SQL 受控執行個體之間建立連結,您需要遵循下列必要條件:

警告

在建立將與連結功能搭配使用的 SQL 受控執行個體時,請考慮到 SQL Server 所用所有記憶體內部 OLTP 功能的記憶體需求。 如需詳細資訊,請參閱 Azure SQL 受控執行個體資源限制概觀 \(部分機器翻譯\)。

權限

在 SQL Server 上,您應具備 sysadmin 權限。

在 Azure SQL 受控執行個體上,您應為 SQL 受控執行個體參與者的成員,或具備自訂角色的下列權限:

Microsoft.Sql/ resource 必要權限
Microsoft.Sql/managedInstances /read、/write
Microsoft.Sql/managedInstances/hybridCertificate /action
Microsoft.Sql/managedInstances/databases /read、/delete、/write、/completeRestore/action、/readBackups/action、/restoreDetails/read
Microsoft.Sql/managedInstances/distributedAvailabilityGroups /read、/write、/delete、/setRole/action
Microsoft.Sql/managedInstances/endpointCertificates /read
Microsoft.Sql/managedInstances/hybridLink /read、/write、/delete
Microsoft.Sql/managedInstances/serverTrustCertificates /write、/delete、/read

準備 SQL Server 執行個體

準備 SQL Server 執行個體時需確認以下幾點:

  • 使用最低支援版本。
  • 已啟用可用性群組功能。
  • 已在啟動時新增適當的追蹤旗標。
  • 資料庫處於完整復原模式並已備份。

需重新啟動 SQL Server,這些變更才會生效。

安裝服務更新

請確定您的 SQL Server 版本已安裝適當的服務更新,如版本可支援性表格中所示。 若需要安裝更新,必須在更新期間重新啟動 SQL Server 執行個體。

若要檢查您的 SQL Server 版本,請在 SQL Server 上執行下列 Transact-SQL (T-SQL) 指令碼:

-- Run on SQL Server
-- Shows the version and CU of the SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';

master 資料庫中建立資料庫主要金鑰

master 資料庫中建立資料庫主要金鑰 (如果金鑰尚未存在)。 在以下指令碼中插入您的密碼代替 <strong_password>,並將密碼存放在機密且安全的地方。 在 SQL Server 上執行此 T-SQL 指令碼:

-- Run on SQL Server
-- Create a master key
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';

若要確定您擁有資料庫主要金鑰,請在 SQL Server 上使用下列 T-SQL 指令碼:

-- Run on SQL Server
USE master;
GO
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%DatabaseMasterKey%';

啟用可用性群組

連結功能依賴 Always On 可用性群組功能,其預設為停用。 如需詳細資訊,請參閱啟用 Always On 可用性群組功能

注意

對於 Linux 上的 SQL Server,請參閱啟用 Always On 可用性群組

若要確認已啟用可用性群組功能,請在 SQL Server 上執行下列 T-SQL 指令碼:

-- Run on SQL Server
-- Is the availability groups feature enabled on this SQL Server
DECLARE @IsHadrEnabled sql_variant = (select SERVERPROPERTY('IsHadrEnabled'))
SELECT
    @IsHadrEnabled as 'Is HADR enabled',
    CASE @IsHadrEnabled
        WHEN 0 THEN 'Availability groups DISABLED.'
        WHEN 1 THEN 'Availability groups ENABLED.'
        ELSE 'Unknown status.'
    END
    as 'HADR status'

重要

在 SQL Server 2016 (13.x) 上,如果您必須啟用可用性群組功能,則請完成準備 SQL Server 2016 必要條件 - Azure SQL 受控執行個體連結所述的額外步驟。 此連結支援的 SQL Server 2019 (15.x) 和較高版本不需要執行這些額外步驟。

如果未啟用可用性群組功能,請遵循下列步驟進行啟用:

  1. 開啟 [SQL Server 組態管理員]。

  2. 在左側窗格中,選取 [SQL Server 服務]。

  3. 以滑鼠右鍵按一下 SQL Server 服務,然後選取 [屬性]。

    SQL Server 組態管理員的螢幕擷取畫面,其中顯示開啟服務屬性的選取項目。

  4. 前往 [AlwaysOn 可用性群組] 索引標籤。

  5. 選取 [啟用 Always On 可用性群組] 核取方塊,然後選取 [確定]。

    此螢幕擷取畫面顯示 Always On 可用性群組的屬性。

  6. 在對話方塊中選取 [OK]

  7. 重新啟動 SQL Server 服務。

啟用啟動追蹤旗標

若要最佳化連結的效能,建議在啟動時啟用下列追蹤旗標:

  • -T1800:當可用性群組中主要和次要複本的記錄檔裝載在不同磁區大小的磁碟上 (例如 512 個位元組和 4KB) 時,此追蹤旗標會將效能最佳化。 如果主要和次要複本的磁碟區大小為 4KB,則不需要此追蹤旗標。 如需詳細資訊,請參閱 KB3009974
  • -T9567:在自動植入期間,此追蹤旗標會針對可用性群組啟用對資料流的壓縮。 壓縮會增加處理器的負載,但可大幅減少植入期間的傳輸時間。

注意

如需 Linux 上的 SQL Server,請參閱啟用追蹤旗標

若要在啟動時啟用這些追蹤旗標,請使用下列步驟:

  1. 開啟 [SQL Server 組態管理員]。

  2. 在左側窗格中,選取 [SQL Server 服務]。

  3. 以滑鼠右鍵按一下 SQL Server 服務,然後選取 [屬性]。

    此螢幕擷取畫面顯示 SQL Server 組態管理員。

  4. 前往 [啟動參數] 索引標籤。在 [指定啟動參數] 中,輸入 -T1800 並選取 [新增] 以新增啟動參數。 然後輸入 -T9567 並選取 [新增] 以新增其他追蹤旗標。 選取 [套用] 以儲存變更。

    此螢幕擷取畫面顯示啟動參數屬性。

  5. 選取 [確定] 以關閉 [屬性] 視窗。

如需詳細資訊,請參閱啟用追蹤旗標的語法

重新啟動 SQL Server 並驗證設定

確定您使用的是支援的 SQL Server 版本之後,啟用 Always On 可用性群組功能,並新增啟動追蹤旗標、重新啟動您的 SQL Server 執行個體以套用所有這些變更:

  1. 開啟 [SQL Server 組態管理員] 。

  2. 在左側窗格中,選取 [SQL Server 服務]。

  3. 以滑鼠右鍵按一下 SQL Server 服務,然後選取 [重新啟動]。

    此螢幕擷取畫面顯示 SQL Server 重新啟動命令呼叫。

重新啟動之後,請在 SQL Server 上執行下列 T-SQL 指令碼,以驗證 SQL Server 執行個體的組態:

-- Run on SQL Server
-- Shows the version and CU of SQL Server
USE master;
GO
SELECT @@VERSION as 'SQL Server version';
GO
-- Shows if the Always On availability groups feature is enabled
SELECT SERVERPROPERTY ('IsHadrEnabled') as 'Is Always On enabled? (1 true, 0 false)';
GO
-- Lists all trace flags enabled on SQL Server
DBCC TRACESTATUS;

您的 SQL Server 版本應為其中一個已套用適當服務更新且受支援的版本、Always On 可用性群組功能已啟用,且已啟用追蹤旗標 -T1800-T9567。 下列螢幕擷取畫面是正確設定 SQL Server 執行個體後的預期結果範例:

此螢幕擷取畫面顯示 SSMS 中的預期成果。

設定網路連線能力

若要讓連結能夠運作,您必須具有 SQL Server 與 SQL 受控執行個體之間的網路連線。 您選擇的網路選項取決於您的 SQL Server 執行個體是否位於 Azure 網路上。

Azure 虛擬機器上的 SQL Server

在裝載 SQL 受控執行個體的相同 Azure 虛擬網路中,於 Azure 虛擬機器上部署 SQL Server 是最簡單的方法,因為兩個執行個體之間會自動存在網路連線能力。 如需詳細資訊,請參閱快速入門:設定 Azure VM 以連線到 Azure SQL 受控執行個體

如果 Azure 虛擬機器執行個體上 SQL Server 所在的虛擬網路不同於受控執行個體,則您必須在這兩個虛擬網路之間建立連線。 虛擬網路不一定要在相同的訂閱中,此案例就可以運作。

有兩個選項可連線虛擬網路:

建議使用對等互連,因為對等互連使用 Microsoft 骨幹網路,所以從連線的觀點來看,對等互連虛擬網路與相同虛擬網路中虛擬機器之間的延遲沒有明顯差異。 相同區域中的網路支援在彼此之間建立虛擬網路對等互連。 在 2020 年 9 月 22 日之後所建立的子網路中裝載的執行個體,都支援全域虛擬網路對等互連。 如需詳細資訊,請參閱常見問題集 (FAQ)

SQL Server (Azure 外部)

如果您的 SQL Server 執行個體裝載在 Azure 外部,請使用下列其中一個選項,在 SQL Server 與 SQL 受控執行個體之間建立 VPN 連線:

提示

在複寫資料時,建議使用 ExpressRoute 以獲得最佳網路效能。 請為您的使用案例佈建具有足夠頻寬的閘道。

環境之間的網路連接埠

不論連線機制為何,在各環境之間傳送的網路流量都必須符合這些必要條件:

裝載受控執行個體的子網路上的網路安全性群組 (NSG) 規則允許:

  • 輸入連接埠 5022 和連接埠範圍 11000-11999 從來源 SQL Server IP 接收流量
  • 輸出連接埠 5022 將流量傳送至目的地 SQL Server IP

裝載 SQL Server 的網路上的所有防火牆,且主機 OS 必須允許:

  • 已開啟輸入連接埠 5022 以接收 MI 子網路 /24 來源 IP 範圍的流量(例如 10.0.0.0/24)
  • 輸出連線埠 5022,且埠範圍 11000-11999 已開啟,以將流量傳送至 MI 子網的目的地 IP 範圍(例如 10.0.0.0/24)

此圖顯示在 SQL Server 和受控執行個體之間設定連結的網路需求。

下表說明每個環境的連接埠動作:

環境 解決方式
SQL Server (Azure 內部) 開啟連接埠 5022 上的輸入和輸出流量,讓網路防火牆涵蓋到SQL 受控執行個體的完整子網路 IP 範圍。 如有必要,請在 SQL Server 主機 OS (Windows/Linux) 防火牆上執行相同的動作。 要以允許連接埠 5022 上的通訊,則要在裝載 VM 的虛擬網路中建立網路安全性群組 (NSG) 規則。
SQL Server (Azure 外部) 開啟連接埠 5022 上的輸入和輸出流量,讓網路防火牆涵蓋到SQL 受控執行個體的完整子網路 IP 範圍。 如有必要,請在 SQL Server 主機 OS (Windows/Linux) 防火牆上執行相同的動作。
SQL 受控執行個體 在 Azure 入口網站建立 NSG 規則,允許在連接埠 5022 和連接埠範圍 11000-11999 接收來自裝載 SQL Server 的 IP 位址和網路所傳送的輸入和輸出流量。

在 SQL Server 執行個體的 Windows 主機 OS 上使用下列 PowerShell 指令碼,在 Windows 防火牆中開啟連接埠:

New-NetFirewallRule -DisplayName "Allow TCP port 5022 inbound" -Direction inbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
New-NetFirewallRule -DisplayName "Allow TCP port 5022 outbound" -Direction outbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP

以下圖表顯示內部部署網路環境的範例,並指出環境中的所有防火牆都必須有開啟的連接埠,包括裝載 SQL Server 的 OS 防火牆,以及任何公司防火牆和/或網關:

此圖顯示在 SQL Server 和受控執行個體之間設定連結的網路基礎結構。

重要

  • 網路環境中的每個防火牆都必須開啟連接埠,包括主機伺服器,以及網路上的任何公司防火牆或閘道。 在公司環境中,您可能需要向網路系統管理員顯示本節中的資訊,以協助在公司網路層中開啟其他連接埠。
  • 雖然您可以選取自訂 SQL Server 端的端點,但您無法變更或自訂 SQL 受控執行個體的連接埠號碼。
  • 裝載受控執行個體的子網路所使用的 IP 位址範圍,且 SQL Server不得重疊。

新增 URL 至允許清單

根據您的網路安全性設定,您可能需要將 SQL 受控執行個體 FQDN 的 URL 和 Azure 所使用的一些資源管理端點新增至您的允許清單。

以下將標列出應該加入至允許清單的資源:

  • SQL 受控執行個體的完整網域名稱 (FQDN)。 例如:managedinstance1.6d710bcf372b.database.windows.net
  • Microsoft Entra Authority
  • Microsoft Entra Endpoint 資源識別碼
  • Resource Manager 端點
  • 服務端點

請遵循設定適用於政府雲端的 SSMS 一節中的步驟,存取 SQL Server Management Studio (SSMS) 中的 [工具] 介面,並識別您需要新增至允許清單之雲端內資源的特定 URL。

測試網路連線能力

在 SQL Server 與 SQL 受控執行個體之間必須有雙向網路連線,連結方能運作。 在 SQL Server 端開啟連接埠,並在 SQL 受控執行個體端設定 NSG 規則之後,請使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 測試連線能力。

在 SQL Server 和 SQL 受控執行個體上建立暫存 SQL Agent 作業來測試網路,以檢查兩個執行個體之間的連線。 當您在 SSMS 中使用 [網路檢查程式] 時,系統會自動為您建立作業,並在測試完成後刪除。 如果您使用 T-SQL 測試網路,則必須手動刪除 SQL Agent 作業。

注意

目前不支援在 Linux 上的 SQL Server 上由 SQL Server Agent 執行 PowerShell 指令碼,因此目前無法在 Linux 上的 SQL Server 上從 SQL Server Agent 作業執行 Test-NetConnection

若要使用 SQL Agent 測試網路連線能力,您需要遵從下列需求:

  • 對於 SQL Server 和 SQL 受控執行個體,執行測試的使用者必須具有許可權才能建立作業 (有系統管理員身分或屬於 msdb 的 SQLAgentOperator 角色)。
  • SQL Server Agent 服務必須在 SQL Server 中執行。 由於 Agent 預設會在 SQL 受控執行個體上開啟,因此無需採取其他動作。

若要在 SSMS 中測試 SQL Server 與 SQL 受控執行個體之間的網路連線,請遵循下列步驟:

  1. 在 SSMS 中連接到將作為主要複本的執行個體。

  2. 物件總管中,展開資料庫,並以滑鼠右鍵按一下您想要連結至次要資料庫的資料庫。 選取[作業]>[Azure SQL 受控執行個體連結]>[測試連線] 以開啟網路檢查程式精靈:

    S S M S 中物件總管的螢幕擷取畫面,其中在資料庫連結右鍵功能表中選取了測試連線。

  3. 網路檢查程式精靈的 [簡介] 頁面上,選取 [下一步]

  4. 如果已符合必要條件上的所有需求,請選取 [下一步]。 否則,請解決任何未滿足的必要條件,然後選取 [重新執行驗證]

  5. [登入] 頁面上,選取 [登入] 以連線到將次要複本的其他執行個體。 選取 [下一步]。

  6. 檢查 [指定網路選項] 頁面上的詳細資料,並視需要提供 IP 位址。 選取 [下一步]。

  7. [摘要] 頁面上,檢閱精靈採取的動作,然後選取 [完成] 以測試兩個複本之間的連線。

  8. 檢閱 [結果] 頁面,以驗證兩個複本之間的連線,然後選取 [關閉] 以完成。

警告

只有在您已驗證來源與目標環境之間的網路連線能力時,才繼續進行後續步驟。 否則,請先為網路連線問題疑難排解,再繼續進行。

移轉受 TDE 保護資料庫的憑證 (選用)

如果要將受到透明資料加密 (TDE) 保護的 SQL Server 資料庫連接至受控執行個體,必須先將對應的加密憑證從內部部署或 Azure VM SQL Server 執行個體移轉至受控執行個體,再使用連結。 如需詳細步驟,請參閱將受 TDE 保護資料庫的憑證移轉到 Azure SQL 受控執行個體

使用受服務管理的 TDE 金鑰加密的 SQL 受控執行個體資料庫無法連接至 SQL Server。 只有在資料庫是使用客戶自控金鑰加密,且目的地伺服器可以存取加密該資料庫所使用的相同金鑰時,才能將該加密資料庫連接至 SQL Server。 詳情請參閱使用 Azure Key Vault 設定 SQL Server TDE

注意

SQL Server 2022 CU 14 開始,Linux 上的 SQL Server 支援 Azure Key Vault。

安裝 SSMS

SQL Server Management Studio (SSMS) 是使用受控執行個體連結的最簡單方式。 下載 SSMS 19.0 版或更新版本 ,並安裝在用戶端電腦上。

安裝完成之後,請開啟 SSMS 並連線到支援的 SQL Server 執行個體。 在使用者資料庫上按一下滑鼠右鍵,並確認功能表上會出現 [Azure SQL 受控執行個體連結] 選項。

此螢幕擷取畫面顯示捷徑功能表上的 Azure SQL 受控執行個體連結選項。

設定政府雲端的 SSMS

如果您想要將 SQL 受控執行個體部署至政府雲端,必須修改 SQL Server Management Studio (SSMS) 設定,才能使用正確的雲端。 如果您未將 SQL 受控執行個體部署至政府雲端,請略過此步驟。

若要更新 SSMS 設定,請遵循下列步驟:

  1. 開啟 SSMS。
  2. 從功能表中選取 [工具],然後選擇 [選項]。
  3. 展開 [Azure 服務],然後選取 [Azure 雲端]。
  4. [選取 Azure 雲端] 下方,使用下拉式清單來選擇 AzureUSGovernment 或其他政府雲端,例如 AzureChinaCloud

此螢幕擷取畫面顯示 SSMS UI、選項頁面、Azure 服務,並在其中強調顯示 Azure 雲端。

如果您想要回到公用雲端,請從下拉式清單中選擇 [AzureCloud]

若要使用連結:

若要深入了解連結:

針對其他複寫和移轉案例,請考慮: