複寫資料分割資料表及索引

分割大型資料表或索引將更易於管理,因為分割可讓您快速並有效率地管理及存取資料子集,同時又可維護資料收集的完整性。如需詳細資訊,請參閱<資料分割資料表及索引>。複寫可支援資料分割,其方式是提供一組屬性來指定應該如何處理資料分割資料表和索引。

交易式和合併式複寫的發行項屬性

下表列出用來分割資料的物件。

物件

建立的方法

資料分割資料表或索引

CREATE TABLE 或 CREATE INDEX

資料分割函數

CREATE PARTITION FUNCTION

資料分割配置

CREATE PARTITION SCHEME

與資料分割有關的第一組屬性是發行項結構描述選項,這些選項可決定是否應將資料分割物件複製到訂閱者。可透過下列方式來設定這些結構描述選項:

複寫會在初始同步處理期間將物件複製到訂閱者。如果資料分割配置使用 PRIMARY 以外的檔案群組,這些檔案群組必須在初始同步處理之前存在於訂閱者上。

在初始化訂閱者之後,資料變更會傳播到訂閱者,並套用到適當的資料分割。但是,不支援資料分割配置的變更。交易式和合併式複寫不支援以下命令:ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME 或 ALTER INDEX 的 REBUILD WITH PARTITION 陳述式。合併式複寫不支援 ALTER TABLE 的 SWITCH PARTITION 命令,但是交易式複寫則有支援,如下一節所述。快照式複寫可允許變更資料分割配置,因為每當訂閱者與發行集同步處理時,都會重新初始化快照集。

交易式複寫和合併式複寫在每個資料表或索引最多支援 1024 個資料分割。

資料分割切換的複寫支援

資料表資料分割的其中一個重要優點,就是能夠快速及有效率地在資料分割之間移動資料子集。資料的移動是利用 SWITCH PARTITION 命令。如需詳細資訊,請參閱<使用資料分割切換有效傳送資料>。根據預設,當啟用資料表進行複寫時,會基於以下理由而封鎖 SWITCH PARTITION 作業:

  • 如果資料移入或移出存在於發行者上但不存在於訂閱者上的資料表,則發行者和訂閱者彼此可能會不一致。當資料移入或移出臨時資料表時,通常會發生這個問題。

  • 如果訂閱者對於資料分割資料表的定義與發行者不同,則當散發代理程式嘗試在訂閱者上套用變更時,將會失敗。SQL Server 2000 訂閱者也有問題,因為 SQL Server 2000 不支援資料分割資料表。

雖然有這些潛在的問題,還是可以啟用資料分割切換來進行交易式複寫。在您啟用資料分割切換之前,請確定與資料分割切換有關的所有資料表都存在於發行者和訂閱者上,並確定資料表定義和資料分割定義是相同的。

如果發行者和訂閱者的資料分割擁有完全相同的資料分割配置,您可以開啟 allow_partition_switch 與 replication_partition_switch,這樣就只會將資料分割切換陳述式複寫至訂閱者。您也可以開啟 allow_partition_switch,但不複寫 DDL。如果您想要將資料分割中舊的月份清除,但在訂閱者中保留複寫的資料分割供其他年份進行備份,這樣做就會相當實用。

警告注意事項注意

您不應針對點對點發行啟用資料分割切換,因為隱藏的資料行會用來偵測和解決衝突。

啟用資料分割切換

交易式發行集的下列屬性可讓使用者控制複寫環境中的資料分割切換行為:

  • @allow_partition_switch,當設定為 true 時,SWITCH PARTITION 可以針對發行集資料庫來執行。

  • @replicate_partition_switch 會決定 SWITCH PARTITION DDL 陳述式是否應該複寫到訂閱者。只有當 @allow_partition_switch 設定為 true 時,這個選項才有效。

您可以在建立發行集時使用 sp_addpublication 來設定這些屬性,或是在建立發行集之後使用 sp_changepublication 來設定。如前所述,合併式複寫不支援資料分割切換。若要在已啟用合併式複寫的資料表上執行 SWITCH PARTITION,請從發行集中移除此資料表。