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 предопределенных ролей базы данных.