如何:指定發行項類型 (複寫 Transact-SQL 程式設計)
複寫的預設發行項類型為資料表發行項,但是您可以將其他資料庫物件發行為發行項,包括檢視、預存程序、使用者定義函數及預存程序執行。您可以使用複寫預存程序,於定義發行項時以程式設計方式指定發行項類型。使用哪些預存程序取決於複寫的類型和發行項類型而定。
[!附註]
在定義資料表、檢視和預存程序發行項時的僅限結構描述指定會指示,只會複寫物件定義。
在交易式或快照式發行集中發行資料表發行項
在發行集資料庫的發行者上,執行 sp_addarticle。針對 @type 指定下列其中一個值,以定義發行項的類型:
logbased - 記錄式資料表發行項,這是交易式和快照式複寫的預設值。複寫會自動產生用於水平篩選的預存程序以及定義垂直篩選之發行項的檢視。
logbased manualfilter - 記錄式、水平篩選的發行項,其中用於水平篩選的預存程序是由使用者手動建立及定義,而且是針對 @filter 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>。
logbased manualview - 記錄式、垂直篩選的發行項,其中用於定義垂直篩選之發行項的檢視是由使用者建立及定義,而且是針對 @sync_object 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>和<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
logbased manualboth - 記錄式、水平和垂直篩選的發行項,其中用於水平篩選的預存程序及定義垂直篩選之發行項的檢視是由使用者所建立及定義,而且是分別針對 @filter 和 @sync_object 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>和<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
這樣會為發行集定義新的發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
如果是 logbased manualboth 和 logbased manualfilter 發行項,請執行 sp_articlefilter 來產生用於水平篩選之發行項的篩選預存程序。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>。
如果是 logbased manualboth、logbased manualview 和 logbased manualfilter 發行項,請執行 sp_articleview 來產生用於定義垂直篩選之發行項的檢視。如需詳細資訊,請參閱<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
在交易式或快照式發行集中發行檢視或索引檢視發行項
在發行集資料庫的發行者上,執行 sp_addarticle。針對 @type 指定下列其中一個值,以定義發行項的類型:
indexed view logbased - 記錄式索引檢視發行項。複寫會自動產生用於水平篩選的預存程序以及定義垂直篩選之發行項的檢視。
view schema only - 僅限結構描述的檢視發行項。也必須要複寫基底資料表。
indexed view schema only - 僅限結構描述的索引檢視發行項。也必須要複寫基底資料表。
indexed view logbased manualfilter - 記錄式、水平篩選的索引檢視發行項,其中用於水平篩選的預存程序是由使用者手動建立及定義,而且是針對 @filter 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>。
indexed view logbased manualview - 記錄式、篩選的索引檢視發行項,其中用於定義垂直篩選之發行項的檢視是由使用者建立及定義,而且是針對 @sync_object 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>和<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
indexed view logbased manualboth - 記錄式、篩選的索引檢視發行項,其中用於水平篩選的預存程序及定義垂直篩選之發行項的檢視是由使用者所建立及定義,而且是分別針對 @filter 和 @sync_object 所指定。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>和<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
這樣會為發行集定義新的發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
如果是 logbased manualboth 和 logbased manualfilter 發行項,請執行 sp_articlefilter 來產生用於水平篩選之發行項的篩選預存程序。如需詳細資訊,請參閱<如何:定義及修改靜態資料列篩選 (複寫 Transact-SQL 程式設計)>。
如果是 logbased manualboth、logbased manualview 和 logbased manualfilter 發行項,請執行 sp_articleview 來產生用於定義垂直篩選之發行項的檢視。如需詳細資訊,請參閱<如何:定義及修改資料行篩選 (複寫 Transact-SQL 程式設計)>。
在交易式或快照式發行集中發行預存程序、預存程序執行或使用者定義函數發行項
在發行集資料庫的發行者上,執行 sp_addarticle。針對 @type 指定下列其中一個值,以定義發行項的類型:
proc schema only - 僅限結構描述的預存程序發行項。
proc exec - 將預存程序的執行複寫到發行項的所有訂閱者。如需詳細資訊,請參閱<在交易式複寫中發行預存程序執行>。
serializable proc exec - 只有當預存程序執行於可序列化交易的環境內時,才複寫預存程序的執行。如需詳細資訊,請參閱<在交易式複寫中發行預存程序執行>。
func schema only - 僅限結構描述的使用者定義函數發行項。
這樣會為發行集定義新的發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
在合併式發行集中發行資料表或檢視發行項
在發行集資料庫的發行者上,執行 sp_addmergearticle。針對 @type 指定下列其中一個值,以定義發行項的類型:
table - 資料表發行項。
indexed view schema only - 僅限結構描述的索引檢視發行項。
view schema only - 僅限結構描述的檢視發行項。
這樣會為發行集定義新的發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
在合併式發行集中發行預存程序或使用者定義函數發行項
在發行集資料庫的發行者上,執行 sp_addmergearticle。針對 @type 指定下列其中一個值,以定義發行項的類型:
func schema only - 僅限結構描述的使用者定義函數發行項。
proc schema only - 僅限結構描述的預存程序發行項。
這樣會為發行集定義新的發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。