Поделиться через


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'AdventureWorks2012Replica';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2012Replica]

-- 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'AdventureWorks2012Replica';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2012Replica]

-- 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.

См. также

Справочник

Системные хранимые процедуры (Transact-SQL)

Основные понятия

Повторная инициализация подписок