建立刊物之後,就可以新增和移除文章。 您可以隨時新增發行項,但卸除發行項所需的動作取決於復寫的類型,以及卸除發行項的時間。
新增文章
新增文章涉及:將文章新增至出版物,建立出版物的新快照,同步處理訂閱以套用新文章的架構定義和數據。
備註
如果您將發行項新增至合併式發行集,而現有的發行項相依於新發行項,則必須使用 sp_addmergearticle 和 sp_changemergearticle的 @processing_order 參數來指定這兩個發行項的處理順序。 請考慮下列案例:您發佈數據表,但不會發佈數據表所參考的函式。 如果您未發佈函式,就無法在訂閱者端建立數據表。 當您將函式新增至發行集時:為 sp_addmergearticle 的 @processing_order 參數指定 1 的值;並針對 sp_changemergearticle 的 @processing_order 參數指定 2 的值,並指定參數@article的數據表名稱。 此處理順序可確保在相依於它的數據表之前,於訂閱者端建立函式。 您可以為每篇文章使用不同的編號,只要函式的編號低於表格的編號即可。
可以透過以下方法新增一或多篇文章:
** 將文章新增至發行集之後,您必須為發行建立新的快照(如果是具有參數化篩選的合併發行,則須為所有分割區建立快照)。 散發代理程式或合併代理程序接著會將新發行項的架構和數據複製到訂閱者(它不會重新初始化整個發行集)。
若要建立新的快照集,請參閱 建立和套用初始快照集。
若要為具有參數化篩選的合併式發行集建立新的快照集,請參閱 使用參數化篩選建立合併式發行集的快照集。
建立快照集之後,請同步訂閱,以複製新發行項的結構和資料。
移除文章
文章可以隨時從刊物中移除,但您必須考慮下列行為:
從刊物移除文章並不會從刊物資料庫或訂閱資料庫中移除該文章的對應物件。 如有需要,請使用DROP <物件> 移除這些物件。 當您透過外鍵條件約束刪除與其他已發佈文章相關的項目時,建議您手動或在訂閱者端使用隨需腳本執行來刪除資料表:指定包含適當的 DROP <Object> 語句的腳本。 如需詳細資訊,請參閱在同步處理期間執行腳本(複寫 Transact-SQL 程序設計)。
對於相容性層級為 90RTM 或更高的合併出版物,文章可以隨時刪除,但需要新的快照。 此外:
如果文章是聯結篩選器或邏輯記錄關係中的父文章,必須先刪除這些關係,這需要重新初始化。
如果文章在出版物中包含最後一個參數化篩選,則必須重新初始化訂閱。
對於相容性層級低於 90RTM 的合併式發行集,在訂閱的初始同步處理之前,可以卸除發行項,而不需要任何特殊考慮。 如果在同步一個或多個訂閱後卸除項目,則必須卸除、重新建立和同步訂閱。
針對快照式或交易式發行集,在建立訂閱之前,文章可以被丟棄,無需特別考慮。 如果刪除文章後建立了一個或多個訂閱,則必須刪除、重新建立及同步訂閱。 如需卸除訂閱的詳細資訊,請參閱 訂閱發行集 和 sp_dropsubscription (Transact-SQL) 。 sp_dropsubscription 可讓您從訂用帳戶卸除單一發行項,而不是整個訂用帳戶。
從出版物中刪除文章涉及刪除該文章並為出版物創建新的快照。 卸除元素會使目前的快照失效;因此,必須建立新的快照。
- 若要從發行集卸除發行項,請參閱將發行項 新增至發行集和卸除發行集 (SQL Server Management Studio) 或刪除 發行項。
發行集移除文章後,您必須為該發行集建立新的快照(如果是具有參數化篩選的合併式發行,則需包括所有分割區)。
若要建立新的快照集,請參閱 建立和套用初始快照集。
若要為具有參數化篩選的合併式發行集建立新的快照集,請參閱 使用參數化篩選建立合併式發行集的快照集。
如上所述,在某些情況下,移除文章需要先卸除訂閱,然後重新建立並同步。 如需詳細資訊,請參閱 訂閱發行集 和 同步處理數據。