sp_addmergepullsubscription (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Agrega una suscripción de extracción a una publicación de combinación. Este procedimiento almacenado se ejecuta en el suscriptor de la base de datos de suscripciones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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' ]
[ ; ]

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación. @publication es sysname, sin ningún valor predeterminado.

[ @publisher = ] N'publisher'

El nombre del publicador. @publisher es sysname, con un valor predeterminado del nombre del servidor local. El publicador debe ser un servidor válido.

[ @publisher_db = ] N'publisher_db'

Nombre de la base de datos del publicador. @publisher_db es sysname, con un valor predeterminado de NULL.

[ @subscriber_type = ] N'subscriber_type'

Tipo de suscriptor. @subscriber_type es nvarchar(15), con un valor predeterminado de localy puede ser uno de global, localo anonymous. En SQL Server 2005 (9.x) y versiones posteriores, las suscripciones locales se conocen como suscripciones de cliente y las suscripciones globales se conocen como suscripciones de servidor .

[ @subscription_priority = ] subscription_priority

Prioridad de la suscripción. @subscription_priority es real, con un valor predeterminado de NULL. En el caso de las suscripciones locales y anónimas, la prioridad es 0.0. La prioridad la utiliza el solucionador predeterminado para elegir un ganador cuando se detectan conflictos. Para los suscriptores globales, la prioridad de la suscripción debe ser menor que 100, que es la prioridad del publicador.

[ @sync_type = ] N'sync_type'

Tipo de sincronización de suscripciones. @sync_type es nvarchar(15), con un valor predeterminado de automatic. Puede ser automatic o none. Si automatices , el esquema y los datos iniciales de las tablas publicadas se transfieren primero al suscriptor. Si nonees , se supone que el suscriptor ya tiene el esquema y los datos iniciales de las tablas publicadas. Las tablas y los datos del sistema se transfieren siempre.

Se recomienda especificar un valor de automatic.

[ @description = ] N'description'

Una breve descripción de esta suscripción de extracción. @description es nvarchar(255), con un valor predeterminado de NULL. El Monitor de replicación muestra este valor en la Friendly Name columna , que se puede usar para ordenar las suscripciones de una publicación supervisada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_addmergepullsubscription se usa para la replicación de mezcla.

Si usa Agente SQL Server para sincronizar la suscripción, el procedimiento almacenado sp_addmergepullsubscription_agent debe ejecutarse en el suscriptor para crear un agente y un trabajo para sincronizar con la publicación.

Ejemplos


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

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_addmergepullsubscription.