sys.sp_reinitmergesubscription (Transact-SQL)

Dotyczy:SQL Server

Oznacza subskrypcję merge do ponownej inicjalizacji przy następnym uruchomieniu Merge Agent. Ta procedura jest wykonywana w Publisher w bazie publikacji.

Transact-SQL konwencje składni

Składnia

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

Arguments

[ @publication = ] N'publikacja'

Nazwa publikacji. @publication jest nazwą systemu z domyślnym .all

[ @subscriber = ] N'subskrybent'

Nazwa subskrybenta. @subscriber to nazwa systemu z domyślnym .all

[ @subscriber_db = ] N'subscriber_db'

Nazwa bazy danych subskrybentów. @subscriber_db to nazwa systemu, z domyślnym .all

[ @upload_first = ] N'upload_first'

Określa, czy zmiany na stronie Subscriber są przesyłane przed ponownym uruchomieniem subskrypcji. @upload_first to nvarchar(5), z domyślnym .false

  • Jeśli true, zmiany są przesyłane przed ponownym uruchomieniem subskrypcji.
  • Jeśli false, zmiany nie są przesyłane.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_reinitmergesubscription jest stosowany w replikacji scalania.

sp_reinitmergesubscriptionmożna wywołać z Publisher, aby ponownie zainicjować subskrypcje scalania. Powinieneś też powtórzyć Snapshot Agent.

Jeśli dodasz, usuniesz lub zmienisz filtr parametryzowany, oczekujące zmiany na stronie Subskrybera nie mogą zostać przesłane do Publisher podczas ponownej inicjalizacji. Jeśli chcesz przesłać oczekujące zmiany, zsynchronizuj wszystkie subskrypcje przed zmianą filtra.

Examples

A. Ponownie zainicjalizuj subskrypcję push i stracisz oczekujące zmiany

-- 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. Ponownie zainicjalizuj subskrypcję push i przesyłaj oczekujące zmiany

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

Permissions

Tylko członkowie roli stałego serwera systemowego lub roli db_owner stałej bazy danych mogą wykonywać sp_reinitmergesubscription.