sp_changemergefilter (Transact-SQL)

適用於:SQL Server

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

Transact-SQL 語法慣例

語法

sp_changemergefilter
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @filtername = ] N'filtername'
    , [ @property = ] N'property'
    , [ @value = ] N'value'
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

引數

[ @publication = ] N'publication'

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

[ @article = ] N'article'

發行項的名稱。 @article為 sysname,沒有預設值。

[ @filtername = ] N'filtername'

篩選的目前名稱。 @filtername為 sysname,沒有預設值。

[ @property = ] N'property'

要變更的屬性名稱。 @property為 sysname,沒有預設值。

[ @value = ] N'value'

指定之屬性的新值。 @value為 nvarchar(1000),沒有預設值。

下表描述發行項的屬性,以及這些屬性的值。

屬性 Description
filter_type 1 聯結篩選。

需要此選項才能支援 SQL Server Compact Subscribers。
2 邏輯記錄關聯性。
3 聯結篩選也是邏輯記錄關聯性。
filtername 篩選的名稱。
join_articlename 聯結發行項的名稱。
join_filterclause Filter 子句。
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來完成。

若要使用邏輯記錄,發行集和發行項必須符合數個需求。 如需詳細資訊,請參閱使用邏輯記錄分組相關資料列的變更

權限

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