sp_changemergepublication (Transact-SQL)
適用於:SQL Server
變更合併式發行集的屬性。 這個預存程式會在發行集資料庫的發行者端執行。
語法
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_retention 為 0 表示不需要衝突清除。 |
|
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_level
80SP3
(僅限)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
。