Azure SQL 受控執行個體的異動複寫 (預覽)

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

異動複寫是 Azure SQL 受控執行個體和 SQL Server 的一項功能,可讓您將 Azure SQL 受控執行個體或 SQL Server 執行個體中一個資料表的資料,複寫到遠端資料庫上的資料表。 此功能可讓您同步處理不同資料庫中的多個資料表。

SQL 受控執行個體的異動複寫目前處於公開預覽狀態。

概觀

您可以使用異動複寫將 Azure SQL 受控執行個體中的變更發送至:

  • SQL Server 資料庫 - 位於內部部署環境或 Azure VM

  • Azure SQL Database 中的資料庫

  • Azure SQL 受控執行個體中的執行個體資料庫

    注意

    若要使用 Azure SQL 受控執行個體的所有功能,您必須使用最新版的 SQL Server Management Studio (SSMS)SQL Server Data Tools (SSDT)

單元

異動複寫中的主要元件是發行者散發者訂閱者,如下圖所示:

使用 SQL Database 進行複寫

角色 Azure SQL Database Azure SQL 受控執行個體
發行者
散發者
提取訂閱者
發送訂閱者

發行者將更新傳送至散發者,以發行某些資料表 (發行項) 的變更。 發行者可以是 Azure SQL 受控執行個體或 SQL Server 執行個體。

散發者從發行者的發行項中收集變更,然後發行至訂閱者。 散發者可以是 Azure SQL 受控執行個體或 SQL Server 執行個體 (與發行者版本相同或更高的任何版本)。

訂閱者接收發行者上的變更。 SQL Server 執行個體和 Azure SQL 受控執行個體都可以是發送和提取訂閱者,但是,當散發者是 Azure SQL 受控執行個體,而訂閱者不是時,不支援提取訂閱。 Azure SQL Database 中的資料庫只能是發送訂閱者。

從下列 SQL Server 版本起,Azure SQL 受控執行個體支援作為訂閱者:

複寫類型

複寫有不同類型

複寫 Azure SQL Database Azure SQL 受控執行個體
標準異動 是 (僅作為訂閱者) Yes
快照式 是 (僅作為訂閱者) Yes
合併式複寫
對等
雙向
可更新的訂閱

支援性對照表

Azure SQL 受控執行個體與 SQL Server 的異動複寫支援性對照表相同。

發行者 散發者 訂閱者
SQL Server 2019 SQL Server 2019 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2017 SQL Server 2019
SQL Server 2017
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2016 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2014 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2012 SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2008 R2
SQL Server 2008
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008

使用時機

異動複寫對於下列情況非常有用:

  • 發行資料庫中一或多個資料表中的變更,並散發至已訂閱變更的 SQL Server 執行個體或 Azure SQL Database 中的一或多個資料庫。
  • 讓數個散發資料庫處於同步狀態。
  • 持續發行變更,以此將資料庫從一個 SQL Server 執行個體或 Azure SQL 受控執行個體遷移至另一個資料庫。

比較資料同步與異動複寫

類別 資料同步 異動複寫
優點 - 主動-主動支援
- 在內部部署與 Azure SQL Database 之間雙向進行
- 更低的延遲性
- 交易一致性
- 移轉後重複使用現有的拓撲
缺點 - 無交易一致性
- 更高的效能影響
- 無法從 Azure SQL Database 發行
- 高維護成本

一般設定

一般情況下,發行者和散發者必須位在雲端或內部部署中。 不支援下列設定:

發行者與本機散發者在 SQL 受控執行個體上

單一執行個體作為發行者和散發者

發行者和散發者都設定在單一 SQL 受控執行個體上,並將變更散發至其他另一個 SQL 受控執行個體、SQL Database 或 SQL Server 執行個體。

發行者與遠端散發者在 SQL 受控執行個體上

在此設定中,一個受控執行個體將變更發行至另一個 SQL 受控執行個體上的散發者,此散發者可服務許多來源 SQL 受控執行個體,並將變更散發至 Azure SQL Database、Azure SQL 受控執行個體或 SQL Server 上的一或多個目標。

發行者和散發者使用個別的執行個體

在兩個受控執行個體上設定發行者和散發者。 這種設定有一些限制:

  • 兩個受控執行個體都在相同的 vNet 上。
  • 這兩個受控執行個體位於相同的位置。

內部部署發行者/散發者與遠端訂閱者

Azure SQL資料庫作為訂閱者

在此設定中,Azure SQL Database 或 Azure SQL 受控執行個體中的資料庫是訂閱者。 此設定支援從內部部署移轉至 Azure。 如果訂閱者是 Azure SQL Database 中的資料庫,則必須處於發送模式。

規格需求

  • 對複寫參與者之間的連線使用 SQL 驗證。
  • 使用 Azure 儲存體帳戶共用作為複寫使用的工作目錄。
  • 在子網路安全性規則中開啟 TCP 輸出連接埠 445,以存取 Azure 檔案共用。
  • 當 SQL 受控執行個體是發行者/散發者,而訂閱者不是時,開啟 TCP 輸出連接埠 1433。 您也可能需要在 SQL 受控執行個體 NSG 輸出安全性規則中,將連接埠 1433 目的地服務標籤allow_linkedserver_outboundvirtualnetwork 變更為 internet
  • 將發行者和散發者都放在雲端,或都放在內部。
  • 如果複寫參與者的虛擬網路不同,則在虛擬網路之間設定 VPN 對等互連。

注意

當散發者是 Azure SQL 受控執行個體資料庫,且訂閱者為內部部署時,如果輸出網路安全性群組 (NSG) 連接埠 445 遭到封鎖,則您連線至 Azure 儲存體檔案時可能會遇到錯誤 53。 更新 vNet NSG 以解決此問題。

關於容錯移轉群組

如果發行者散發者 SQL 受控執行個體在容錯移轉群組中,則在發生容錯移轉之後,SQL 受控執行個體管理員必須在舊的主要資料庫上清除所有發行集,並在新的主要資料庫上重新設定。 在此情況下需要下列活動:

  1. 停止資料庫上執行的所有複寫作業 (如果有的話)。

  2. 在發行者資料庫上執行下列指令碼,從發行者卸除訂閱中繼資料:

    EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'
    
  3. 從訂閱者卸除訂閱中繼資料。 在訂閱者 SQL 受控執行個體的訂閱資料庫上,執行下列指令碼:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher, e.g. example.ac2d23028af5.database.windows.net>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. 在已發行的資料庫中執行下列指令碼,以強制從發行者卸除所有複寫物件:

    EXEC sp_removedbreplication
    
  5. 強制從原始主要 SQL 受控執行個體卸除舊的散發者 (如果容錯移轉至常有散發者的舊主要資料庫)。 在舊的散發者 SQL 受控執行個體的 master 資料庫上,執行下列指令碼:

    EXEC sp_dropdistributor 1,1
    

如果訂閱者 SQL 受控執行個體在容錯移轉群組中,則應該將發行集設定為連線至訂閱者受控執行個體的容錯移轉群組接聽程式端點。 發生容錯移轉時,受控執行個體管理員的後續動作取決於發生的容錯移轉類型:

  • 如果容錯移轉不遺失資料,則容錯移轉之後,複寫繼續運作。
  • 如果容錯移轉遺失資料,複寫也會正常運作。 將會再次複寫遺失的變更。
  • 如果容錯移轉遺失資料,不過是在散發資料庫保留期間之外遺失資料,則 SQL 受控執行個體管理員必須重新初始化訂閱資料庫。

後續步驟

如需有關設定異動複寫的詳細資訊,請參閱下列教學課程:

另請參閱