使用 NOT FOR REPLICATION 控制條件約束、識別和觸發程序
更新: 2007 年 9 月 15 日
在某些情況下,對複寫拓樸中使用者活動的處理方式最好與代理程式活動不同。例如,如果資料列由「發行者」端的使用者插入,並且插入符合資料表中的檢查條件約束,則在由「訂閱者」端的複寫代理程式插入資料列時,可能不需要強制使用此相同條件約束。NOT FOR REPLICATION 選項可讓您指定當複寫代理程式執行作業時,以不同方式處理下列資料庫物件:
- 外部索引鍵條件約束
當複寫代理程式執行插入、更新或刪除作業時,不強制使用外部索引鍵條件約束。 - 檢查條件約束
當複寫代理程式執行插入、更新或刪除作業時,不強制使用檢查條件約束。 - 識別資料行
當複寫代理程式執行插入作業時,識別資料行值不會遞增。 - 觸發程序
當複寫代理程式執行插入、更新或刪除作業時,不執行觸發程序。
當資料表發行時,結構描述選項會控制訂閱資料庫中建立物件的方式。預設結構描述的選項根據發行集而有所不同;當選項設定為指定在訂閱資料庫中建立 FOREIGN KEY 條件約束和 CHECK 條件約束時,就會設定 NOT FOR REPLICATION 選項。NOT FOR REPLICATION 選項也可以在複寫支援可更新訂閱之合併式發行集與交易式發行集中的識別資料行時設定。如需複寫識別資料行的詳細資訊,請參閱<複寫識別資料行>。
預設設定在大多數情況下均適用,但如果應用程式需要不同的行為,也可以變更這些預設設定。重點要考慮的是觸發程序。例如,如果定義設定了 NOT FOR REPLICATION 選項的插入觸發程序,則所有使用者插入都會引發觸發程序,但複寫代理程式的插入則不會。考慮將資料插入追蹤資料表的觸發程序:在使用者原始插入資料列時,觸發程序可以引發並可於追蹤資料表輸入資料列;但是資料複寫至訂閱者時,觸發程序不可引發,因為會導致不必要的資料列插入追蹤資料表內。
若要指定 NOT FOR REPLICATION 選項
可透過以下方式指定 NOT FOR REPLICATION 選項:
- 使用複寫結構描述選項。如需詳細資訊,請參閱<如何:指定結構描述選項 (SQL Server Management Studio)>和<How to: Specify Schema Options (Replication Transact-SQL Programming)>。
- 當出現以下情況時,直接使用 Transact-SQL 語法或在 Microsoft SQL Server Management Studio 中指定:
- 在發行集資料庫中建立或修改物件。
- 在訂閱資料庫中建立或修改物件。通常僅在不使用快照集初始化訂閱時,才會手動建立物件 (而不是使用複寫)。
如需詳細資訊,請參閱: - <CREATE TABLE (Transact-SQL)>、<ALTER TABLE (Transact-SQL)>、<CREATE TRIGGER (Transact-SQL)>與<ALTER TRIGGER (Transact-SQL)>
- 如何:停用複寫的外部索引鍵條件約束 (Visual Database Tools)
- 如何:停用複製的檢查條件約束 (Visual Database Tools)
請參閱
概念
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2007 年 9 月 15 日 |
|