Freigeben über


sp_reinitmergesubscription (Transact-SQL)

Gilt für: SQL Server

Markiert ein Mergeabonnement für die Neuinitialisierung bei der nächsten Ausführung des Merge-Agents. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publication = ] N'Publikation'

Der Name der Veröffentlichung. @publication ist "sysname" mit der Standardeinstellung "all.

[ @subscriber = ] N'subscriber'

Den Namen des Abonnenten. @subscriber ist "sysname" mit der Standardeinstellung "all.

[ @subscriber_db = ] N'subscriber_db'

Der Name der Abonnentendatenbank. @subscriber_db ist "sysname" mit der Standardeinstellung "all.

[ @upload_first = ] N'upload_first'

Gibt an, ob Änderungen am Abonnenten hochgeladen werden, bevor das Abonnement erneut initialisiert wird. @upload_first ist nvarchar(5) mit einem Standardwert von false.

  • Wenn trueÄnderungen hochgeladen werden, bevor das Abonnement erneut initialisiert wird.
  • Wenn false, werden Änderungen nicht hochgeladen.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_reinitmergesubscription wird in der Seriendruckreplikation verwendet.

sp_reinitmergesubscription kann vom Publisher aufgerufen werden, um Zusammenführungsabonnements erneut zu initialisieren. Sie sollten auch die Momentaufnahmen-Agent erneut ausführen.

Wenn Sie einen parametrisierten Filter hinzufügen, ablegen oder ändern, können ausstehende Änderungen am Abonnenten während der Erneutitialisierung nicht in den Publisher hochgeladen werden. Wenn Sie ausstehende Änderungen hochladen möchten, sollten Sie vor dem Ändern des Filters alle Abonnements synchronisieren.

Beispiele

A. Erneutes Initialisieren des Pushabonnements und Verlust ausstehender Änderungen

-- 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. Erneutes Initialisieren des Pushabonnements und Hochladen ausstehender Änderungen

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder die db_owner feste Datenbankrolle können ausgeführt werden sp_reinitmergesubscription.