分享方式:


sp_changemergepublication (Transact-SQL)

適用於:SQL Server

變更合併式發行集的屬性。 這個預存程式會在發行集資料庫的發行者端執行。

Transact-SQL 語法慣例

語法

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

引數

[ @publication = ] N'publication'

發行集的名稱。 @publication為 sysname,沒有預設值。

[ @property = ] N'property'

要變更指定發行集的屬性。 @property為 sysname,而且可以是下表所列的其中一個值。

[ @value = ] N'value'

指定之屬性的新值。 @value為 nvarchar(255),預設值為 NULL

、 和 可以是下表中所列的其中一個值。

下表描述可以變更之發行集的屬性,並描述這些屬性的值限制。

屬性 數值 Description
allow_anonymous true 允許匿名訂閱。
false 不允許匿名訂閱。
allow_partition_realignment true 刪除會傳送至訂閱者,藉由移除不再屬於訂閱者分割區一部分的數據,以反映分割區變更的結果。 此為預設行為。
false 來自舊數據分割的數據會留在訂閱者上,而發行者上對此數據所做的變更不會復寫到此訂閱者。 相反地,訂閱者上所做的變更會復寫至發行者。 當數據必須供歷史用途存取時,這會用來從舊分割區保留訂用帳戶中的數據。
allow_pull true 指定發行集允許提取訂閱。
false 指定的發行集不允許提取訂閱。
allow_push true 指定發行集允許發送訂閱。
false 指定的發行集不允許發送訂閱。
allow_subscriber_initiated_snapshot true 訂閱者可以起始快照集程式。
false 訂閱者無法起始快照集程式。
allow_subscription_copy true 您可以複製訂閱此發行集的訂閱資料庫。
false 您無法複製訂閱此發行集的訂閱資料庫。
allow_synctoalternate true 允許替代同步處理夥伴與這個發行者同步處理。
false 不允許替代同步處理夥伴與這個發行者同步處理。
allow_web_synchronization true 訂閱可以透過 HTTPS 進行同步處理。
false 訂閱無法透過 HTTPS 進行同步處理。
alt_snapshot_folder 指定快照集替代資料夾的位置。
automatic_reinitialization_policy 1 重新初始化訂閱之前,會先從訂閱者上傳變更。
0 訂閱會重新初始化,而不需要先上傳變更。
centralized_conflicts true 所有衝突記錄都會儲存在發行者端。 如果您變更此屬性,則必須重新初始化現有的訂閱者。
false 衝突記錄會儲存在衝突解決中遺失的伺服器。 如果您變更此屬性,則必須重新初始化現有的訂閱者。
compress_snapshot true 替代快照集資料夾中的快照集會壓縮成 CAB 格式。 默認快照集資料夾中的快照集無法壓縮。 變更此屬性需要新的快照集。
false 根據預設,快照集不會壓縮。 變更此屬性需要新的快照集。
conflict_logging publisher 衝突記錄會儲存在發行者端。
subscriber 衝突記錄會儲存在造成衝突的訂閱者端。 SQL Server Compact 訂閱者不支援。
both 衝突記錄會同時儲存在發行者和訂閱者端。
conflict_retention int,指定保留期間,以天為單位保留衝突。 設定 conflict_retention0 表示不需要衝突清除。
description 發行集的描述。
dynamic_filters true 發行集會根據動態子句進行篩選。
false 發行集不會動態篩選。
enabled_for_internet true 已針對因特網啟用發行集。 檔傳輸通訊協定 (FTP) 可用來將快照集檔案傳輸到訂閱者。 發行集的同步處理檔案會放入 C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp 目錄中。
false 未針對因特網啟用發行集。
ftp_address 散發者 FTP 服務的網路位址。 指定儲存發行集快照集檔案的位置。
ftp_login 用來連線到 FTP 服務的用戶名稱。
ftp_password 用來連線到 FTP 服務的用戶密碼。
ftp_port 散發者的 FTP 服務埠號碼。 指定儲存發行集快照集檔案之 FTP 網站的 TCP 通訊埠號碼。
ftp_subdirectory 指定當發行集支援使用 FTP 傳播快照集時,建立快照集檔案的位置。
generation_leveling_threshold int 指定世代中包含的變更數目。 世代是傳遞至發行者或訂閱者之變更的集合。
keep_partition_changes true 同步處理已優化,而且只會影響在變更數據分割中具有數據列的訂閱者。 變更此屬性需要新的快照集。
false 同步處理未優化,而且在數據分割中的數據變更時,會驗證傳送給訂閱者的數據分割。 變更此屬性需要新的快照集。
max_concurrent_merge int,表示可以針對發行集執行的並行合併進程數目上限。 如果為 0,則沒有限制。 如果排程的合併進程數目超過此數目,則會將多餘的作業放入佇列中,直到目前的lmerge進程完成為止。
max_concurrent_dynamic_snapshots int,表示產生可同時針對使用參數化數據列篩選之合併式發行集執行的篩選數據快照集數目上限的 int。 如果 0為 ,則沒有限制。 如果排程多個快照集進程同時執行,則會將多餘的作業放入佇列中,直到目前的合併進程完成為止。
post_snapshot_script 指定檔案位置的 .sql 指標。 散發代理程式 或 合併代理程式 會在初始同步處理期間套用所有其他復寫物件腳本和數據之後,執行快照集後腳本。 變更此屬性需要新的快照集。
pre_snapshot_script 指定檔案位置的 .sql 指標。 在訂閱者端套用快照集時,合併代理程式 會在任何復寫的物件腳本之前執行預先快照集腳本。 變更此屬性需要新的快照集。
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
publish_to_activedirectory true 此參數已被取代,而且會維護腳本的回溯相容性。 您無法再將發行集資訊新增至 Active Directory。
false 從 Active Directory 移除發行集資訊。
replicate_ddl 1 在發行者端執行的數據定義語言 (DDL) 語句會複寫。
0 不會復寫 DDL 語句。
retention int,表示儲存指定出版物之變更的retention_period_unit單位數。 如果訂閱未在保留期間內同步處理,且其收到的擱置變更已由散發者端的清除作業移除,則訂閱會過期,且必須重新初始化。 允許的最大保留期間是9999年12月31日和目前日期之間的天數。

注意: 合併式發行集的保留期間有24小時的寬限期,以容納不同時區的訂閱者。
retention_period_unit day 保留期間是以天為單位指定。
week 保留期間是以周為單位指定。
month 保留期間是以月為單位指定。
year 保留期間是以年份指定。
snapshot_in_defaultfolder true 快照集檔案會儲存在預設快照集資料夾中。
false 快照集檔案會儲存在 所 alt_snapshot_folder指定的替代位置。 這個組合會指定快照集檔案會同時儲存在預設和替代位置。
snapshot_ready true 發行集的快照集可供使用。
false 發行集的快照集無法使用。
status active 發行集處於使用中狀態。
inactive 發行集處於非使用中狀態。
sync_mode native

bcp native
所有數據表的原生模式大量複製程序輸出會用於初始快照集。
character

bcp character
所有數據表的字元模式大量複製程序輸出會用於初始快照集,這是所有非 SQL Server 訂閱者的必要專案。
use_partition_groups

注意:使用分割區群組之後,如果要還原為 使用 setupbelongs,並在 中changemergearticle設定 use_partition_groups=false ,在擷取快照之後可能無法正確反映。 快照集所產生的觸發程式符合數據分割群組的規範。

此案例的因應措施是將狀態設定為 [非使用中]、修改 use_partition_groups,然後將狀態設定為 [作用中]。
true 發行集使用預先計算的數據分割。
false 發行集不使用預先計算的數據分割。
validate_subscriber_info 列出用來擷取訂閱者資訊的函式。 然後,驗證用於訂閱者的動態篩選準則,以確認資訊會一致地分割。
web_synchronization_url 用於 Web 同步處理的因特網 URL 預設值。
NULL (預設值) 傳回@property支援的值清單。

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

確認此預存程式所採取的動作可能會使現有的快照集失效。 @force_invalidate_snapshot為 bit,預設值為 0

  • 0 指定變更發行集不會使快照集失效。 如果預存程式偵測到變更確實需要新的快照集,就會發生錯誤,而且不會進行任何變更。

  • 1 指定變更發行集可能會使快照集失效。 如果有現有的訂用帳戶需要新的快照集,請為現有快照集的許可權標示為過時,併產生新的快照集。

如需變更時需要產生新快照集的屬性,請參閱<備註>一節。

[ @force_reinit_subscription = ] force_reinit_subscription

確認此預存程式所採取的動作可能需要重新初始化現有的訂用帳戶。 @force_reinit_subscription為 bit,預設值為 0

  • 0 指定變更發行集不需要重新初始化訂閱。 如果預存程式偵測到變更需要重新初始化現有的訂用帳戶,就會發生錯誤,而且不會進行任何變更。

  • 1 表示發行集的變更會重新初始化現有的訂閱,並授與重新初始化訂閱的許可權。

如需變更時需要重新初始化所有現有訂閱的屬性,請參閱一節。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

sp_changemergepublication 用於合併式複寫。

變更下列屬性需要產生新的快照集。 您必須為 @force_invalidate_snapshot 參數指定 的值1

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level80SP3(僅限)
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode
  • use_partition_groups

變更下列屬性需要重新初始化現有的訂用帳戶。 您必須為 @force_reinit_subscription 參數指定 的值1

  • dynamic_filters
  • validate_subscriber_info

若要使用 publish_to_active_directory列出 Active Directory 的發行集對象,必須在 Active Directory 中建立 SQL Server 物件。

範例

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

權限

只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_changemergepublication