sp_reinitmergesubscription (Transact-SQL)

Применимо к:SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

[ @publication = ] N'publication'

Имя публикации. @publication — sysname с значением по умолчаниюall.

[ @subscriber = ] N'подписчик'

Имя подписчика. @subscriber — sysname с значением по умолчаниюall.

[ @subscriber_db = ] N'subscriber_db'

Имя базы данных подписчика. @subscriber_db — sysname с значением по умолчаниюall.

[ @upload_first = ] N'upload_first'

Указывает, передаются ли изменения на подписчике до повторной инициализации подписки. @upload_first — nvarchar(5) с значением по умолчаниюfalse.

  • Если trueизменения передаются до повторной инициализации подписки.
  • Если falseизменения не передаются.

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

0 (успешно) или 1 (сбой).

Замечания

sp_reinitmergesubscriptionиспользуется в слиянии реплика tion.

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

USE [AdventureWorks2022Replica]

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

B. Повторно инициализация принудительной подписки и отправки ожидающих изменений

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

USE [AdventureWorks2022Replica]

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

Разрешения

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