sp_resyncmergesubscription (Transact-SQL)
將合併訂閱重新同步處理到您指定的已知驗證狀態。這可讓您將訂閱資料庫強制聚合或同步處理到某個特定的時間點,如上次驗證成功或指定的日期。當利用這個方法來重新同步處理訂閱時,不會重新套用快照集。快照式複寫訂閱或交易式複寫訂閱不使用這個預存程序。 這個預存程序執行於發行集資料庫的發行者端,或訂閱資料庫的訂閱者端。
語法
sp_resyncmergesubscription [ [ @publisher = ] 'publisher' ]
[ , [ @publisher_db = ] 'publisher_db' ]
, [ @publication = ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db = ] 'subscriber_db' ]
[ , [ @resync_type = ] resync_type ]
[ , [ @resync_date_str = ] resync_date_string ]
引數
[@publisher = ] 'publisher'
這是發行者的名稱。publisher 是 sysname,預設值是 NULL。如果預存程序執行於發行者端,NULL 值就有效。如果預存程序執行於訂閱者端,就必須指定發行者。[@publisher_db = ] 'publisher_db'
這是發行集資料庫的名稱。publisher_db 是 sysname,預設值是 NULL。如果預存程序執行於發行集資料庫中的發行者端,NULL 值就有效。如果預存程序執行於訂閱者端,就必須指定發行者。[@publication = ] 'publication'
這是發行集的名稱。publication 是 sysname,沒有預設值。[@subscriber = ] 'subscriber'
這是訂閱者的名稱。subscriber 是 sysname,預設值是 NULL。如果預存程序執行於訂閱者端,NULL 值就有效。如果預存程序執行於發行者端,就必須指定訂閱者。[@subscriber_db = ] 'subscriber_db'
這是訂閱資料庫的名稱。subscription_db 是 sysname,預設值是 NULL。如果預存程序執行於訂閱資料庫中的訂閱者端,NULL 值就有效。如果預存程序執行於發行者端,就必須指定訂閱者。[@resync_type = ] resync_type
定義應該開始重新同步的時間。resync_type 是 int,它可以是下列值之一。值
描述
0
從初始快照集之後開始同步處理。這是最需要資源的選項,因為訂閱者會套用初始快照集之後的所有變更。
1
從上次驗證成功之後開始同步處理。訂閱者會重新套用上次驗證成功之後所引發的所有新的或不完整的層代 (Generation)。
2
從 resync_date_str 中的給定日期開始的同步處理。訂閱者會重新套用這個日期之後所引發的所有新的或不完整的層代 (Generation)。
[@resync_date_str=] resync_date_string
定義應該開始重新同步的日期。resync_date_string 是 nvarchar(30),預設值是 NULL。當 resync_type 是 2 值時,使用這個參數。提供的日期會轉換成對等的 datetime 值。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_resyncmergesubscription 用於合併式複寫中。
resync_type 參數的 0 值 (重新套用初始快照集之後的所有變更) 可能非常需要資源,但可能比完整重新初始化所需要的資源少得多。例如,如果初始快照集是一個月前所傳遞的,這個值會造成重新套用上個月以來的資料。如果初始快照集包含 1 GB 資料,但上個月以來的變更量含有 2 MB 已變更的資料,重新套用這些資料的效率,可能比重新套用完整的 1 GB 快照集好。
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_resyncmergesubscription。