複寫資料分割資料表及索引
分割大型資料表或索引將更易於管理,因為分割可讓您快速並有效率地管理及存取資料子集,同時又可維護資料收集的完整性。如需詳細資訊,請參閱<資料分割資料表與索引>。複寫可支援資料分割,其方式是提供一組屬性來指定應該如何處理資料分割資料表和索引。
交易式和合併式複寫的發行項屬性
下表列出用來分割資料的物件。
物件 |
建立的方法 |
---|---|
資料分割資料表或索引 |
CREATE TABLE 或 CREATE INDEX |
資料分割函數 |
CREATE PARTITION FUNCTION |
資料分割配置 |
CREATE PARTITION SCHEME |
與資料分割有關的第一組屬性是發行項結構描述選項,這些選項可決定是否應將資料分割物件複製到訂閱者。可透過下列方式來設定這些結構描述選項:
在新增發行集精靈的 [發行項屬性] 頁面中,或是在 [發行集屬性] 對話方塊中。若要複製上表所列的物件,請針對 [複製資料表資料分割配置] 和 [複製索引資料分割配置] 屬性指定 true 的值。如需有關如何存取 [發行項屬性] 頁面的詳細資訊,請參閱<如何:檢視和修改發行集與發行項屬性 (SQL Server Management Studio)>。
藉由使用下列其中一個預存程序的 schema_option 參數:
用於交易式複寫的 sp_addarticle 或 sp_changearticle
用於合併式複寫的 sp_addmergearticle 或 sp_changemergearticle
若要複製上表所列的物件,請指定適當的結構描述選項值。如需有關如何指定結構描述選項的詳細資訊,請參閱<如何:指定結構描述選項 (複寫 Transact-SQL 程式設計)>。
複寫會在初始同步處理期間將物件複製到訂閱者。如果資料分割配置使用 PRIMARY 以外的檔案群組,這些檔案群組必須在初始同步處理之前存在於訂閱者上。
在初始化訂閱者之後,資料變更會傳播到訂閱者,並套用到適當的資料分割。但是,不支援資料分割配置的變更。交易式和合併式複寫不支援以下命令:ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME 或 ALTER INDEX 的 REBUILD WITH PARTITION 陳述式。合併式複寫不支援 ALTER TABLE 的 SWITCH PARTITION 命令,但是交易式複寫則有支援,如下一節所述。
資料分割切換的複寫支援
資料表資料分割的其中一個重要優點,就是能夠快速及有效率地在資料分割之間移動資料子集。資料的移動是利用 SWITCH PARTITION 命令。如需詳細資訊,請參閱<使用資料分割切換有效傳送資料>。根據預設,當啟用資料表進行複寫時,會基於以下理由而封鎖 SWITCH PARTITION 作業:
如果資料移入或移出存在於發行者上但不存在於訂閱者上的資料表,則發行者和訂閱者彼此可能會不一致。當資料移入或移出臨時資料表時,通常會發生這個問題。
如果訂閱者對於資料分割資料表的定義與發行者不同,則當散發代理程式嘗試在訂閱者上套用變更時,將會失敗。SQL Server 2000 訂閱者也有問題,因為 SQL Server 2000 不支援資料分割資料表。
雖然有這些潛在的問題,還是可以啟用資料分割切換來進行交易式複寫。在您啟用資料分割切換之前,請確定與資料分割切換有關的所有資料表都存在於發行者和訂閱者上,並確定資料表定義和資料分割定義是相同的。
啟用資料分割切換
交易式發行集的下列屬性可讓使用者控制複寫環境中的資料分割切換行為:
@allow_partition_switch,當設定為 true 時,SWITCH PARTITION 可以針對發行集資料庫來執行。
@replicate_partition_switch 會決定 SWITCH PARTITION DDL 陳述式是否應該複寫到訂閱者。只有當 @allow_partition_switch 設定為 true 時,這個選項才有效。
您可以在建立發行集時使用 sp_addpublication 來設定這些屬性,或是在建立發行集之後使用 sp_changepublication 來設定。如前所述,合併式複寫不支援資料分割切換。若要在已啟用合併式複寫的資料表上執行 SWITCH PARTITION,請從發行集中移除此資料表。