教學課程:設定 Azure SQL Database 與 SQL Server 中資料庫之間的 SQL 資料同步

適用於:Azure SQL Database

在本教學課程中,您將了解如何使用包含 Azure SQL Database 和 SQL Server 執行個體的同步群組設定 SQL 資料同步。 同步群組會依照您設定的排程自訂設定和同步。

本教學課程假設您先前至少有一些使用 SQL Database 和 SQL Server 的經驗。

如需 SQL 資料同步的概觀,請參閱使用 SQL 資料同步跨雲端和內部部署資料庫同步處理資料

如需如何設定 SQL 資料同步的 PowerShell 範例,請參閱如何在 SQL Database 中的資料庫之間進行同步如何在 Azure SQL Database 與 SQL Server 中的資料庫之間進行同步

重要

中樞資料庫是同步拓撲的中央端點,其中的同步群組具有多個資料庫端點。 同步群組中具有端點的所有其他成員資料庫都會與中樞資料庫進行同步處理。

目前,Azure SQL 資料庫僅支援 SQL 資料同步。 中樞資料庫必須是 Azure SQL 資料庫。

僅支援使用 Azure SQL 資料庫超大規模資料庫作為成員資料庫,不支援作為中樞資料庫。

建立同步群組

  1. 前往 Azure 入口網站。 搜尋並選取 [SQL 資料庫],以尋找現有的 Azure SQL 資料庫。

  2. 選取您想要用來作為資料同步中樞資料庫的現有資料庫。

  3. 在所選取資料庫 [SQL 資料庫] 資源功能表的 [資料管理] 底下,選取 [同步至其他資料庫]

  4. 在 [同步至其他資料庫] 頁面上,選取 [新增同步群組]。 [建立資料同步群組] 頁面隨即開啟。

  5. 在 [建立資料同步群組] 頁面上,設定下列設定:

    A screenshot from the Create Data Sync page of the Azure portal, creating a new Sync Metadata Database to use with Automatic Sync.

    設定 描述
    同步群組名稱 輸入新同步群組的名稱。 這個名稱與資料庫本身的名稱不同。
    同步處理中繼資料資料庫 選擇建立資料庫 (建議) 或使用現有的資料庫作為 [同步中繼資料資料庫]

    Microsoft 建議您建立新的空白資料庫作為 [同步中繼資料資料庫]。 資料同步會在此資料庫中建立資料表,並頻繁執行工作負載。 此資料庫會作為所選區域與訂用帳戶中所有同步群組的共用同步中繼資料資料庫。 您無法在不移除區域中所有同步群組和同步代理程式的情況下,變更資料庫或其名稱。

    如果您選擇建立新的資料庫,請選取 [新資料庫]。 選取 [設定資料庫設定]。 在 [SQL 資料庫] 頁面上,命名並設定新的 Azure SQL 資料庫,然後選取 [確定]。

    如果您選擇 [使用現有資料庫],請從 [同步中繼資料資料庫] 下拉式清單中選取資料庫。
    自動同步處理 選取 [開啟] 或 [關閉]

    如果您選擇 [開啟],請在 [同步頻率] 區段中輸入數字,然後選取 [秒]、[分鐘]、[小時] 或 [天]
    儲存設定並經過選取的間隔期間之後,就會開始進行第一次同步。
    衝突解決 選取 [中樞獲勝] 或 [成員獲勝]

    中樞獲勝表示發生衝突時,中樞資料庫中的資料會覆寫成員資料庫中的衝突資料。

    成員獲勝表示發生衝突時,成員資料庫中的資料會覆寫中樞資料庫中的衝突資料。
    中樞資料庫使用者名稱中樞資料庫密碼 將使用者名稱和密碼提供給中樞資料庫的 SQL 驗證登入 server admin。 這是您啟動之相同 Azure SQL 邏輯伺服器的伺服器管理員使用者名稱和密碼。 目前不支援 Microsoft Entra (先前稱為 Azure Active Directory) 驗證。
    使用私人連結 選擇服務受控私人端點,以在同步處理服務與中樞資料庫之間建立安全連線。
  6. 選取 [確定] 並等候同步群組建立和部署完成。

  7. 新增同步處理群組頁面上,如果您已選取使用私人連結,您需要核准私人端點連線。 資訊訊息中的連結會帶您體驗私人端點連線,您可以在其中核准連線。

    A screenshot from the Azure portal Private Endpoint connections page, showing where to approve a private link.

    注意

    同步群組和同步成員的私人連結,要以個別方式分別建立、核准及停用。

新增同步成員

建立並部署新的同步群組之後,開啟該同步群組後前往 [資料庫] 頁面,並在其中選取同步成員。

注意

若要更新或插入中樞資料庫的使用者名稱和密碼,請前往 [選取同步成員] 頁面中的 [中樞資料庫] 區段。

將 Azure SQL 資料庫中的資料庫新增為同步群組的成員

  1. 在 [選取同步成員] 區段中,選取 [新增 Azure 資料庫],可選擇性地將 Azure SQL Database 中的資料庫新增至同步群組。 [設定 Azure 資料庫] 頁面隨即開啟。

    A screenshot from the Azure portal of the Configure Azure Database page, where you can add a database to the sync group.

  2. 在 [設定 Azure SQL Database] 頁面上,變更下列設定:

    設定 描述
    同步成員名稱 提供新同步成員的名稱。 這個名稱與資料庫本身的名稱不同。
    訂用帳戶 選取相關聯的 Azure 訂用帳戶以便計費。
    Azure SQL Server 選取現有的伺服器。
    Azure SQL Database 在 SQL Database 中選取現有的資料庫。
    同步方向 同步方向可以是 [中樞到成員] 或是 [成員到中樞],或兩者皆可。 選取 [從中樞]、[到中樞] 或 [雙向同步]。如需詳細資訊,請參閱運作方式
    使用者名稱密碼 輸入成員資料庫所在伺服器的現有認證。 請不要在此區段輸入「新」的認證。
    使用私人連結 選擇服務受控私人端點,以在同步處理服務與成員資料庫之間建立安全連線。
  3. 選取 [確定] 並等候新的同步成員建立和部署完成。

將 SQL Server 執行個體上的資料庫新增為同步群組的成員

  1. 在 [成員資料庫] 區段中,選取 [新增內部部署資料庫],選擇性地將 SQL Server 執行個體中的資料庫新增至同步群組。

  2. [設定內部部署] 頁面隨即開啟,以便您執行下列步驟:

  3. 選取 [選擇同步代理程式閘道]。 [選取同步代理程式] 頁面隨即開啟。

    A screenshot from the Azure portal, in the Configure On-Premises steps. When the Choose the Sync Agent Gateway option is selected, the Select Sync Agent page is shown.

  4. 在 [選擇同步代理程式] 頁面上,選擇要使用現有代理程式,或建立代理程式。

    如果您選擇 [現有代理程式],請從清單中選取現有的代理程式。

    如果您選擇 [建立新的代理程式],請執行下列步驟:

    1. 從提供的連結下載 Data Sync Agent,並安裝在與 SQL Server 執行個體所在伺服器不同的伺服器上。 您也可以直接從 Azure SQL Data Sync Agent 下載代理程式。 如需同步用戶端代理程式的最佳做法,請參閱 Azure SQL 資料同步最佳做法

      重要

      您必須在防火牆開啟輸出 TCP 連接埠 1433,以讓用戶端代理程式和伺服器通訊。

    2. 輸入 [代理程式名稱]

    3. 選取 [建立並產生金鑰] 並將代理程式金鑰複製到剪貼簿。

    4. 選取 [確定] 以關閉 [選取同步代理程式] 頁面。

  5. 在安裝同步用戶端代理程式的伺服器上,找出並執行 Client Sync Agent 應用程式。

    A screenshot from the Microsoft SQL Data Sync 2.0 client agent app. The Submit Agent Key button is highlighted.

    1. 在同步處理代理程式應用程式中,選取 [提交代理程式金鑰]。 [同步中繼資料的資料庫組態] 對話方塊隨即開啟。

    2. 在 [同步中繼資料的資料庫組態] 對話方塊中,貼上從 Azure 入口網站複製的代理程式金鑰。 還要提供同步中繼資料資料庫資料庫所在伺服器的現有認證。 選取 [確定] 並等待設定完成。

      A screenshot from the Microsoft SQL Data Sync 2.0 client agent app. Enter the agent key and server credentials.

      注意

      如果收到防火牆錯誤,請在 Azure 上建立防火牆規則,以允許來自 SQL Server 電腦的傳入流量。 您可以在入口網站或 SQL Server Management Studio (SSMS) 中手動建立規則。 在 SSMS 中,輸入 <hub_database_name>.database.windows.net 作為其名稱,以連線到 Azure 上的中樞資料庫。

    3. 選取 [註冊],以向代理程式註冊 SQL Server 資料庫。 [SQL Server 組態] 對話方塊隨即開啟。

      A screenshot from the Microsoft SQL Data Sync 2.0 client agent app. Add and configure a SQL Server database.

    4. 在 [SQL Server 組態] 對話方塊中,選擇使用 SQL Server 驗證或 Windows 驗證來連線。 如果您選擇 SQL Server 驗證,請輸入現有的認證。 提供 SQL Server 名稱和您要同步之資料庫的名稱,然後選取 [測試連線] 以測試您的設定。 接著選取 [儲存],而已註冊的資料庫會出現在清單中。

      A screenshot from the Microsoft SQL Data Sync 2.0 application showing that the SQL Server database and machine are now registered.

    5. 關閉用戶端同步代理程式應用程式。

  6. 在Azure 入口網站中的 [設定內部部署] 頁面上,選取 [選取資料庫]。

  7. 在 [選取資料庫] 頁面上的 [同步成員名稱] 欄位中,提供新同步成員的名稱。 這個名稱與資料庫本身的名稱不同。 從清單中選取資料庫。 在 [同步方向] 欄位中,選取 [雙向同步]、[至中樞] 或 [從中樞]

  8. 選取 [確定] 以關閉 [選取資料庫] 頁面。 然後選取 [確定] 以關閉 [設定內部部署] 頁面,並等候系統建立並部署新的同步成員。 最後,選取 [確定] 以關閉 [選取同步成員] 頁面。

注意

若要連接到 [SQL 資料同步] 和本機代理程式,請將您的使用者名稱新增至 DataSync_Executor 角色。 資料同步會在 SQL Server 執行個體上建立此角色。

設定同步群組

建立並部署新的同步群組成員之後,請移至 [資料庫同步群組] 頁面中的 [資料表] 區段。

A screenshot from the Azure portal, on the Tables page, select tables and fields to sync.

  1. 在 [資料表] 頁面上,從同步群組成員清單中選取資料庫,然後選取 [重新整理結構描述]。 在重新整理架構時可能會有數分鐘的延遲,而若使用的是私人連結,延遲可能會再多個幾分鐘。

  2. 從清單中,選取您要同步的資料表。預設會選取所有的資料行,所以請取消選取您不想同步的資料行核取方塊。請務必保留選取的主索引鍵資料行。

  3. 選取 [儲存]。

  4. 根據預設,資料庫在排程或手動執行後才會同步。 若要執行手動同步,請在 Azure 入口網站中瀏覽至 SQL Database 中的資料庫,選取 [同步至其他資料庫],然後選取同步群組。 [資料同步] 頁面隨即開啟。 選取 [同步]

    A screenshot from the Azure portal showing the manual sync button for a Database Sync Group.

常見問題集

本節會回答關於 Azure SQL 資料同步服務的常見問題。

SQL 資料同步是否會完整地建立資料表?

如果目的地資料庫中遺漏同步結構描述資料表,則 SQL 資料同步會使用您選取的資料行加以建立。 然而,此行為不會導致結構描述完整無缺,原因如下:

  • 只有您選取的資料行會建立在目的地資料表中。 未選取的資料行會被忽略。
  • 只有選取的資料行索引會建立在目的地資料表中。 若為未選取的資料行,其索引會被忽略。
  • 不會建立 XML 型別資料行的索引。
  • 不會建立 CHECK 條件約束。
  • 不會建立來源資料表上的觸發程序。
  • 不會建立檢視和預存程序。

由於有這些限制,我們的建議事項如下:

  • 針對生產環境,自行建立完整無缺的結構描述。
  • 試驗服務時,請使用自動佈建功能。

為什麼我會看到並非自己建立的資料表?

資料同步會在資料庫中建立額外資料表,以便進行變更追蹤。 請勿刪除它們,否則資料同步無法正常運作。

同步處理之後我的資料會聚合嗎?

不一定。 在有一個中樞和三個支點 (A、B 及 C) 的同步群組中,同步處理是以中樞對 A 點、中樞對 B 點及中樞對 C 點的方式進行。如果在中樞對 A 點同步「之後」,才變更資料庫 A,在進行下次同步工作之前,該變更不會寫入資料庫 B 或資料庫 C。

如何變更同步群組中的結構描述?

手動進行及傳播所有的結構描述變更。

  1. 以手動方式將結構描述變更複寫至中樞和所有的同步成員。
  2. 更新同步結構描述。

新增資料表和資料行:

新的資料表和資料行不會影響目前的同步處理,而在新增至同步結構描述之前,資料同步會忽略它們。 新增資料庫物件時,請依照下列順序執行:

  1. 將新的資料表或資料行新增至中樞和所有的同步成員。
  2. 將新的資料表或資料行新增至同步結構描述。
  3. 開始將值插入新的資料表和資料行。

若要變更資料行的資料類型:

當您變更現有資料行的資料類型時,只要新的值符合同步結構描述中定義的原始資料類型,資料同步就會繼續運作。 例如,如果您將來源資料庫中的類型從 int 變更為 bigint,資料同步就會繼續運作,直到您將對於 int 資料類型太大的值插入為止。 若要完成變更,請以手動方式將結構描述變更複寫至中樞和所有的同步成員,然後更新同步結構描述。

如何使用資料同步匯出和匯入資料庫?

將資料庫匯出為 .bacpac.bacpac 檔案,並匯入該檔案以建立資料庫之後,請執行下列動作以在新的資料庫中使用資料同步:

  1. 使用 Data Sync complete cleanup.sql,來清除新資料庫上的資料同步物件和額外資料表。 此指令碼會刪除資料庫中所有必要的資料同步物件。
  2. 利用新資料庫重新建立同步群組。 如果您不再需要舊有的同步群組,請將它刪除。

哪裡可以找到用戶端代理程式相關資訊?

如需有關用戶端代理程式的常見問題集,請參閱 Azure 常見問題集

是否需要手動核准連結才能開始使用?

可以。 您必須在同步群組的部署期間,或透過使用 PowerShell,在 Azure 入口網站的私人端點連線頁面中,手動核准由服務管理的私人端點。

為什麼會在同步作業佈建 Azure 資料庫時,收到防火牆錯誤?

發生這種情況的原因可能是 Azure 資源無法存取您的伺服器。 有兩個解決方案:

  1. 請確保 Azure 資料庫上的防火牆已將 [允許 Azure 服務和資源存取此伺服器] 設定設為 [是]。 如需詳細資訊,請參閱 Azure SQL Database 和網路存取控制
  2. 設定資料同步的私人連結 (與Azure Private Link 不同)。 Private Link 是使用安全連線與位於防火牆後方的資料庫建立同步群組的方式。 SQL 資料同步私人連結則是由 Microsoft 管理的端點,並且會在內部現有的虛擬網路內建立子網路,因此不需要建立另一個虛擬網路或子網路。

下一步

恭喜! 您已建立一個同時包含 Azure SQL 資料庫與 SQL Server 資料庫的同步群組。

如需 SQL 資料同步的詳細資訊,請參閱:

如需 SQL Database 的詳細資訊,請參閱: