sp_reinitmergesubscription (Transact-SQL)

Помечает подписку слиянием для повторной инициализации при следующем запуске агента слияния. Эта хранимая процедура запущена на издателе в базе данных публикации.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_reinitmergesubscription [ [ @publication = ] 'publication'
    [ , [ @subscriber = ] 'subscriber'
    [ , [ @subscriber_db = ] 'subscriber_db'
    [ , [ @upload_first = ] 'upload_first'

Аргументы

  • [ @publication = ] 'publication'
    Это имя публикации. Аргумент publication имеет тип sysname и значение по умолчанию all.

  • [ @subscriber = ] 'subscriber'
    Это имя подписчика. Аргумент subscriber имеет тип sysname и значение по умолчанию all.

  • [ @subscriber_db = ] 'subscriber_db'
    Это имя базы данных подписчика. Аргумент subscriber_db имеет тип sysnameи значение по умолчанию all.

  • [ @upload_first = ] 'upload_first'
    Будут ли изменения на подписчике переданы перед повторной инициализацией подписки. Аргумент upload_first имеет тип nvarchar(5) и значение по умолчанию FALSE. Если true, изменения будут выгружены у подписчика до инициализации подписки. Если false, изменения не будут выгружены.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

sp_reinitmergesubscription используется для репликации слиянием.

sp_reinitmergesubscription может быть вызвана на стороне издателя для повторной инициализации подписок слиянием. Также рекомендуется перезапустить агент моментальных снимков.

Если добавить, удалить или изменить параметризованный фильтр, то ожидающие обработки изменения на подписчике нельзя будет передать на издатель во время повторной инициализации. Если нужно передать изменения, ожидающие обработки, то перед изменением фильтра необходимо синхронизировать все подписки.

Пример

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorks2008R2Replica';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2008R2Replica]

-- Execute at the Publisher to reinitialize the push subscription. 
-- Pending changes at the Subscrber are lost.
EXEC sp_reinitmergesubscription 
    @subscriber = $(SubServer),
    @subscriber_db = @subscriptionDB,
    @publication = @publication,
    @upload_first = N'false';
GO

-- Start the Merge Agent.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorks2008R2Replica';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2008R2Replica]

-- Execute at the Publisher to reinitialize the push subscription, 
-- and upload pending changes at the Subscriber. 
EXEC sp_reinitmergesubscription 
    @subscriber = $(SubServer),
    @subscriber_db = @subscriptionDB,
    @publication = @publication,
    @upload_first = N'true';
GO

-- Start the Merge Agent.

Разрешения

Только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner могут выполнить sp_reinitmergesubscription.