Share via


設定對交易式發行項之資料變更的傳播方法

本主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,針對 SQL Server 2012 中交易式發行項的資料變更設定傳播方法。

根據預設,異動複寫會針對各發行項使用一組預存程序將變更傳遞至「訂閱者」。 您也可以使用自訂程序取代這些程序。 如需詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

本主題內容

  • 開始之前:

    限制事項

  • 若要針對交易式發行項的資料變更設定傳播方法,請使用:

    SQL Server Management Studio

    Transact-SQL

開始之前

限制事項

  • 編輯複寫所產生的任何快照集檔案時必須特別小心。 您必須在自訂預存程序中測試並支援自訂邏輯。 Microsoft 不提供自訂邏輯的支援。

搭配回到頁首連結使用的箭頭圖示[Top]

使用 SQL Server Management Studio

[發行項屬性 - <發行項>] 對話方塊的 [屬性] 索引標籤上指定傳遞方法,其可於「新增發行集精靈」和 [發行集屬性 - <發行集>] 對話方塊中提供。 如需有關使用此精靈及存取此對話方塊的詳細資訊,請參閱<建立發行集>和<檢視及修改發行集屬性>。

指定傳遞方法

  1. 在新增發行集精靈的 [發行項] 頁面上或 [發行集屬性 - <Publication>] 對話方塊中,選取一個資料表,然後按一下 [發行項屬性]

  2. 按一下 [設定反白顯示資料表發行項的屬性]

  3. [發行項屬性 - <發行項>] 對話方塊的 [屬性] 索引標籤上,於 [陳述式傳遞] 區段中使用 [INSERT 傳遞格式][UPDATE 傳遞格式][DELETE 傳遞格式] 功能表指定各項作業的傳遞方法。

  4. 按一下 [確定]。

  5. 如果您是在 [發行集屬性 - <Publication>] 對話方塊中,請按一下 [確定] 以儲存並關閉對話方塊。

產生及使用自訂預存程序

  1. 在新增發行集精靈的 [發行項] 頁面上或 [發行集屬性 - <Publication>] 對話方塊中,選取一個資料表,然後按一下 [發行項屬性]

  2. 按一下 [設定反白顯示資料表發行項的屬性]

    [發行項屬性 - <發行項>] 對話方塊的 [屬性] 索引標籤上,於 [陳述式傳遞] 區段中適當的傳遞格式功能表 ([INSERT 傳遞格式][UPDATE 傳遞格式][DELETE 傳遞格式]) 中選取 CALL 語法,然後輸入要在 [INSERT 預存程序][DELETE 預存程序][UPDATE 預存程序] 中使用的程序名稱。 如需 CALL 語法的詳細資訊,請參閱<指定交易式發行項變更的傳播方式>中的「預存程序的 CALL 語法」一節。

  3. 按一下 [確定]。

  4. 如果您是在 [發行集屬性 - <Publication>] 對話方塊中,請按一下 [確定] 以儲存並關閉對話方塊。

  5. 產生發行集的快照集時,其中會包含您在前一個步驟中指定的程序。 這些程序將使用您指定的 CALL 語法,但是會包含複寫使用的預設邏輯。

    產生快照集之後,導覽至這個發行項所屬發行集的快照集資料夾,並尋找與該發行項同名的 .sch 檔。 使用「記事本」或其他文字編輯器開啟這個檔案,尋找插入、更新或刪除預存程序的 CREATE PROCEDURE 命令,然後編輯程序定義以便提供傳遞資料變更所需的任何自訂邏輯。 如果快照集是重新產生的,則必須重新建立自訂程序。

搭配回到頁首連結使用的箭頭圖示[Top]

使用 Transact-SQL

異動複寫可讓您控制變更要如何從發行者傳播至訂閱者,而且在建立發行項時,可以透過程式設計方式設定此傳播方法,並在稍後使用複寫預存程序加以變更。

[!附註]

您可以針對發生在發行之資料列上的每一種類型的 DML (資料操作語言) 作業 (插入、更新或刪除) 指定不同的傳播方法。

如需詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

建立使用 Transact-SQL 命令的發行項來傳播資料變更

  • 在發行集資料庫的發行者上,執行 sp_addarticle。 針對 @publication 指定發行項所屬的發行集名稱、針對 @article 指定發行項名稱、針對 @source_object 指定發行的資料庫物件,以及至少針對下列其中一個參數指定 SQL 的值:

    • @ins_cmd - 控制 INSERT 命令的複寫。

    • @upd_cmd - 控制 UPDATE 命令的複寫。

    • @del_cmd - 控制 DELETE 命令的複寫。

    [!附註]

    當針對以上任何參數指定 SQL 的值時,該類型的命令將會以適當的 Transact-SQL 命令形式複寫到訂閱者。

    如需詳細資訊,請參閱<定義發行項>。

建立不會傳播資料變更的發行項

  • 在發行集資料庫的發行者上,執行 sp_addarticle。 針對 @publication 指定發行項所屬的發行集名稱、針對 @article 指定發行項名稱、針對 @source_object 指定發行的資料庫物件,以及至少針對下列其中一個參數指定 NONE 的值:

    • @ins_cmd - 控制 INSERT 命令的複寫。

    • @upd_cmd - 控制 UPDATE 命令的複寫。

    • @del_cmd - 控制 DELETE 命令的複寫。

    [!附註]

    當針對以上任何參數指定 NONE 的值時,該類型的命令將不會複寫到訂閱者。

    如需詳細資訊,請參閱<定義發行項>。

使用使用者修改的自訂預存程序建立發行項

  1. 在發行集資料庫的發行者上,執行 sp_addarticle。 針對 @publication 指定發行項所屬的發行集名稱、針對 @article 指定發行項名稱、針對 @source_object 指定發行的資料庫物件、針對包含 0x02 值 (可自動產生自訂預存程序) 的 @schema_option 位元遮罩指定一個值,以及至少指定下列其中一個參數:

    • @ins_cmd - 指定 CALL sp_MSins_article_name 的值,其中 article_name 是針對 @article 指定的值。

    • @del_cmd - 指定 CALL sp_MSdel_article_nameXCALL sp_MSdel_article_name 的值,其中 article_name 是針對 @article 指定的值。

    • @upd_cmd - 指定 SCALL sp_MSupd_article_nameCALL sp_MSupd_article_nameXCALL sp_MSupd_article_nameMCALL sp_MSupd_article_name 的值,其中 article_name 是針對 @article 指定的值。

    [!附註]

    您可以針對上述的每一個命令參數,為複寫產生的預存程序指定您自己的名稱。

    [!附註]

    如需有關 CALL、SCALL、XCALL 和 MCALL 語法的詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

    如需詳細資訊,請參閱<定義發行項>。

  2. 產生快照集之後,導覽至這個發行項所屬發行集的快照集資料夾,並尋找與該發行項同名的 .sch 檔。 使用 Notepad.exe 開啟這個檔案,尋找插入、更新或刪除預存程序的 CREATE PROCEDURE 命令,然後編輯程序定義以便提供傳播資料變更所需的任何自訂邏輯。 如需詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

使用自訂預存程序中的自訂指令碼建立發行項,以傳播資料變更

  1. 在發行集資料庫的發行者上,執行 sp_addarticle。 針對 @publication 指定發行項所屬的發行集名稱、針對 @article 指定發行項名稱、針對 @source_object 指定發行的資料庫物件、針對包含 0x02 值 (可自動產生自訂預存程序) 的 @schema_option 位元遮罩指定一個值,以及至少指定下列其中一個參數:

    • @ins_cmd - 指定 CALL sp_MSins_article_name 的值,其中 article_name 是針對 @article 指定的值。

    • @del_cmd - 指定 CALL sp_MSdel_article_nameXCALL sp_MSdel_article_name 的值,其中 article_name 是針對 @article 指定的值。

    • @upd_cmd - 指定 SCALL sp_MSupd_article_nameCALL sp_MSupd_article_nameXCALL sp_MSupd_article_nameMCALL sp_MSupd_article_name 的值,其中 article_name 是針對 @article 指定的值。

    [!附註]

    您可以針對上述的每一個命令參數,為複寫產生的預存程序指定您自己的名稱。

    [!附註]

    如需有關 CALL、SCALL、XCALL 和 MCALL 語法的詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

    如需詳細資訊,請參閱<定義發行項>。

  2. 在發行集資料庫的發行者上,使用 ALTER PROCEDURE 陳述式編輯 sp_scriptpublicationcustomprocs,好讓它針對插入、更新或刪除自訂預存程序傳回 CREATE PROCEDURE 指令碼。 如需詳細資訊,請參閱<指定交易式發行項變更的傳播方式>。

變更傳播現有發行項之變更的方法

  1. 在發行集資料庫的發行者上,執行 sp_changearticle。 指定 @publication@article,並針對 @property 指定 ins_cmdupd_cmd、或 del_cmd 的值,以及針對 @value 指定適當的傳播方法。

  2. 針對要變更的每一個傳播方法重複步驟 1。

搭配回到頁首連結使用的箭頭圖示[Top]

請參閱

概念

指定交易式發行項變更的傳播方式

建立、修改及刪除發行集和發行項 (複寫)