sys.sp_addmergepullsubscription (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Voegt een pull-abonnement toe aan een mergepublicatie. Deze opgeslagen procedure wordt uitgevoerd bij de abonnee in de abonnementsdatabase.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_addmergepullsubscription
    [ @publication = ] N'publication'
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @publisher_db = ] N'publisher_db' ]
    [ , [ @subscriber_type = ] N'subscriber_type' ]
    [ , [ @subscription_priority = ] subscription_priority ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @description = ] N'description' ]
[ ; ]

Arguments

[ @publication = ] N'publicatie'

De naam van de publicatie. @publication is sysname, zonder standaard.

[ @publisher = ] N'uitgever'

De naam van de uitgever. @publisher is sysname, met standaard de lokale servernaam. De Publisher moet een geldige server zijn.

[ @publisher_db = ] N'publisher_db'

De naam van de Publisher-database. @publisher_db is een systeemnaam, met als standaard NULL.

[ @subscriber_type = ] N'subscriber_type'

Het type abonnee. @subscriber_type is nvarchar(15), met standaard , localen kan een van global, local, of anonymouszijn. In SQL Server 2005 (9.x) en latere versies worden lokale abonnementen clientabonnementen genoemd, en globale abonnementen serverabonnementen.

[ @subscription_priority = ] subscription_priority

De prioriteit voor het abonnement. @subscription_priority is echt, met als standaard .NULL Voor lokale en anonieme abonnementen is 0.0de prioriteit . De prioriteit wordt door de standaardresolver gebruikt om een winnaar te kiezen wanneer conflicten worden ontdekt. Voor wereldwijde abonnees moet de abonnementsprioriteit lager zijn dan 100, wat de prioriteit van de uitgever is.

[ @sync_type = ] N'sync_type'

Het type abonnementssynchronisatie. @sync_type is nvarchar(15), met een standaard van automatic. Deze waarde kan automatic of none zijn. Als automatic, worden het schema en de initiƫle gegevens voor gepubliceerde tabellen eerst naar de abonnee overgedragen. Als none, wordt aangenomen dat de abonnee het schema en de begingegevens voor gepubliceerde tabellen al heeft. Systeemtabellen en gegevens worden altijd overgedragen.

We raden aan een waarde van automaticte specificeren.

[ @description = ] Beschrijving van'

Een korte beschrijving van dit pull-abonnement. @description is nvarchar(255), met een standaardwaarde van NULL. Deze waarde wordt weergegeven door de Replication Monitor in de Friendly Name kolom, die kan worden gebruikt om de abonnementen voor een gemonitorde publicatie te sorteren.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_addmergepullsubscription wordt gebruikt voor merge-replicatie.

Als SQL Server Agent wordt gebruikt om het abonnement te synchroniseren, moet de sp_addmergepullsubscription_agent opgeslagen procedure bij de abonnee worden uitgevoerd om een agent en taak te maken die synchroniseren met de publicatie.

Examples


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

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO
-- 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".

-- Publication must support anonymous Subscribers.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMergeWebSync';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscriber_type = N'anonymous';

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_password = @password;
GO

Permissions

Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addmergepullsubscription.