sp_reinitmergepullsubscription (Transact-SQL)

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

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

Синтаксис

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

Аргументы

  • [ @publisher = ] 'publisher'
    Имя издателя. Аргумент publisher имеет тип sysname и значение по умолчанию ALL.

  • [ @publisher_db = ] 'publisher_db'
    Имя базы данных издателя. Аргумент publisher_db имеет тип sysname и значение по умолчанию ALL.

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

  • [ @upload_first = ] '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'AdventureWorks';
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorksReplica]

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

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

USE [AdventureWorksReplica]

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