sp_resyncmergesubscription (Transact-SQL)
適用於:SQL Server
將合併訂閱重新同步至您指定的已知驗證狀態。 您可以強制聚合或同步處理訂閱資料庫到特定時間點,例如上次驗證成功或指定日期。 使用此方法重新同步處理訂閱時,不會重新套用快照集。 此預存程式不適用於快照式複寫訂閱或事務複製訂閱。 這個預存程式會在發行者端、發行集資料庫或訂閱者端的訂閱資料庫上執行。
語法
sp_resyncmergesubscription
[ [ @publisher = ] N'publisher' ]
[ , [ @publisher_db = ] N'publisher_db' ]
, [ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
, [ @resync_type = ] resync_type
[ , [ @resync_date_str = ] N'resync_date_str' ]
[ ; ]
引數
[ @publisher = ] N'publisher'
發行者的名稱。 @publisher為 sysname,預設值為 NULL
。 如果預存程式是在發行者端執行,則的值 NULL
是有效的。 如果預存程式是在訂閱者端執行,則必須指定發行者。
[ @publisher_db = ] N'publisher_db'
發行集資料庫的名稱。 @publisher_db為 sysname,預設值為 NULL
。 如果預存程式是在發行集資料庫中的發行者端執行,則值為 NULL
有效的 。 如果預存程式是在訂閱者端執行,則必須指定發行者。
[ @publication = ] N'publication'
發行集的名稱。 @publication為 sysname,沒有預設值。
[ @subscriber = ] N'subscriber'
訂閱者的名稱。 @subscriber為 sysname,預設值為 NULL
。 如果預存程式是在訂閱者端執行,則的值 NULL
是有效的。 如果預存程式是在發行者端執行,則必須指定訂閱者。
[ @subscriber_db = ] N'subscriber_db'
訂閱資料庫的名稱。 @subscriber_db為 sysname,預設值為 NULL
。 如果預存程式是在訂閱資料庫中的訂閱者端執行,則值為 NULL
有效的 。 如果預存程式是在發行者端執行,則必須指定訂閱者。
[ @resync_type = ] resync_type
定義何時應該啟動重新同步處理。 @resync_type為 int,而且可以是下列其中一個值。
值 | Description |
---|---|
0 |
同步處理從初始快照集之後開始。 這個選項最需要大量資源,因為初始快照集之後的所有變更都會重新套用到訂閱者。 |
1 |
同步處理從上次成功驗證開始。 自從上次成功驗證之後,所有新的或不完整的世代都會重新套用至訂閱者。 |
2 |
同步處理會從 resync_date_str 中指定的日期開始。 重新套用日期之後的所有新世代或不完整的世代都會重新套用至訂閱者 |
[ @resync_date_str = ] N'resync_date_str'
定義重新同步處理應該從開始的日期。 @resync_date_str為 nvarchar(30),預設值為 NULL
。 當 @resync_type 為 值2
時,會使用此參數。 指定的日期會轉換成其相等 的 datetime 值。
傳回碼值
0
(成功) 或 1
(失敗)。
備註
sp_resyncmergesubscription
用於合併式複寫。
@resync_type參數的值0
,因為初始快照集之後會重新套用所有變更,但可能比完整重新初始化還少很多。 例如,如果一個月前傳遞初始快照集,這個值會導致重新套用過去一個月的數據。 如果初始快照集包含 1 GB 的數據,但過去一個月的變更數目是由 2 MB 的已變更數據所組成,則重新套用數據比重新套用完整 1 GB 快照集更有效率。
權限
只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_resyncmergesubscription
。