sp_changemergefilter (Transact-SQL)
變更部分合併篩選屬性。這個預存程序執行於發行集資料庫的發行者端。
語法
sp_changemergefilter [ @publication= ] 'publication'
, [ @article= ] 'article'
, [ @filtername= ] 'filtername'
, [ @property= ] 'property'
, [ @value= ] 'value'
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
引數
[@publication= ] 'publication'
這是發行集的名稱。publication 是 sysname,沒有預設值。[@article= ] 'article'
這是發行項的名稱。article 是 sysname,沒有預設值。[@filtername= ] 'filtername'
這是篩選的目前名稱。filtername 是 sysname,沒有預設值。[@property= ] 'property'
這是要變更的屬性名稱。property 是 sysname,沒有預設值。[@value=] 'value'
這是指定屬性的新值。value 是 nvarchar(1000),沒有預設值下表描述發行項的屬性及這些屬性的值。
屬性
值
描述
filter_type
1
聯結篩選。
支援 SQL Server Compact 3.5 SP1 訂閱者需要這個選項。
2
邏輯記錄關聯性。
3
聯結篩選也是一項邏輯記錄關聯性。
filtername
篩選的名稱。
join_articlename
聯結發行項的名稱。
join_filterclause
篩選子句。
join_unique_key
true
聯結作用於唯一索引鍵
false
聯結不作用於唯一索引鍵
[@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_changemergefilter 用於合併式複寫中。
如果快照集存在的話,變更合併發行項的篩選需要重新建立快照集。您可以將 @force_invalidate_snapshot 設為 1 來執行這個動作。另外,如果有這個發行項的訂閱,也必須重新初始化訂閱。這是藉由將 @force_reinit_subscription 設為 1 來完成。
若要使用邏輯記錄,發行集和發行項必須符合許多需求。如需詳細資訊,請參閱<使用邏輯記錄分組相關資料列的變更>。
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_changemergefilter。