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


sp_reinitpullsubscription (Transact-SQL)

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

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

Синтаксис

sp_reinitpullsubscription [ @publisher = ] 'publisher'
        , [ @publisher_db = ] 'publisher_db'
        , [ @publication = ] 'publication'

Аргументы

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

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

  • [ @publication = ] 'publication'
    Имя публикации. Аргумент publication имеет тип sysname и значение по умолчанию all, что означает пометку всех подписок для повторной инициализации.

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

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

Замечания

Процедура sp_reinitpullsubscription используется в репликации транзакций.

Процедура sp_reinitpullsubscription не поддерживается в одноранговой репликации транзакций.

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

Подписки на публикации, созданные со значением false для аргумента @immediate_sync не могут повторно инициализироваться из подписчика.

Можно повторно инициализировать подписку по запросу, выполнив либо процедуру sp_reinitpullsubscription на подписчике, либо процедуру sp_reinitsubscription на издателе.

Пример

-- 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'AdvWorksProductTran';

USE [AdventureWorksReplica]

-- Execute at the Subscriber to reinitialize the pull subscription. 
EXEC sp_reinitpullsubscription 
    @publisher = $(PubServer),
    @publisher_db = @publicationDB,
    @publication = @publication;
GO

-- Start the Distribution Agent.

Разрешения

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