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


sp_reinitmergepullsubscription (Transact-SQL)

Область применения: SQL Server

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

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

Синтаксис

sp_reinitmergepullsubscription
    [ [ @publisher = ] N'publisher' ]
    [ , [ @publisher_db = ] N'publisher_db' ]
    [ , [ @publication = ] N'publication' ]
    [ , [ @upload_first = ] N'upload_first' ]
[ ; ]

Аргументы

[ @publisher = ] N'publisher'

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

[ @publisher_db = ] N'publisher_db'

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

[ @publication = ] N'publication'

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

[ @upload_first = ] N'upload_first'

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

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

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

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

Замечания

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

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

Примеры

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

-- 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2022';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2022Replica]

-- Execute at the Subscriber to reinitialize the pull subscription. 
-- Pending changes at the Subscrber are lost.
EXEC sp_reinitmergepullsubscription 
    @publisher = $(PubServer),
    @publisher_db = @publicationDB,
    @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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks2022';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2022Replica]

-- Execute at the Subscriber to reinitialize the pull subscription, 
-- and upload pending changes at the Subscriber. 
EXEC sp_reinitmergepullsubscription 
    @publisher = $(PubServer),
    @publisher_db = @publicationDB,
    @publication = @publication,
    @upload_first = N'true';
GO

-- Start the Merge Agent.

Разрешения

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