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