Actualizar scripts de replicación (programación de la replicación con Transact-SQL)
Los archivos de script de Transact-SQL se pueden usar para configurar mediante programación una topología de replicación. Para obtener más información, consulte Replication System Stored Procedures Concepts (Conceptos sobre los procedimientos almacenados del sistema de replicación).
Importante
Aunque no necesita actualizar scripts ejecutados por miembros del rol sysadmin
, se recomienda modificar los ya existentes tal como se describe en este tema. Especifique una cuenta que tenga permisos mínimos para cada agente de replicación tal como se describe en la sección sobre permisos requeridos por el agente del tema Replication Agent Security Model.
Estas mejoras de seguridad, que hacen posible un mayor control sobre los permisos permitiéndole especificar de manera explícita las cuentas Microsoft Windows bajo las cuales se ejecutan los trabajos del agente de replicación, afectan a los siguientes procedimientos almacenados de scripts existentes:
sp_addpublication_snapshot:
Ahora debe proporcionar las credenciales de Windows como @job_login y @job_password al ejecutar sp_addpublication_snapshot (Transact-SQL) para crear el trabajo con el que se ejecuta el Agente de instantáneas en el distribuidor.
sp_addpushsubscription_agent:
Ahora debería ejecutar sp_addpushsubscription_agent (Transact-SQL) para agregar explícitamente un trabajo y proporcionar las credenciales de Windows (@job_login y @job_password) en las que se ejecuta el trabajo de Agente de distribución en el distribuidor. En las versiones de SQL Server anteriores a SQL Server 2005, esto se hacía automáticamente cuando se creó una suscripción de inserción.
sp_addmergepushsubscription_agent:
Ahora debería ejecutar sp_addmergepushsubscription_agent (Transact-SQL) para agregar explícitamente un trabajo y proporcionar las credenciales de Windows (@job_login y @job_password) en las que se ejecuta el trabajo de Agente de mezcla en el distribuidor. En las versiones de SQL Server anteriores a SQL Server 2005, esto se hacía automáticamente cuando se creó una suscripción de inserción.
sp_addpullsubscription_agent:
Ahora debe proporcionar las credenciales de Windows como @job_login y @job_password al ejecutar sp_addpullsubscription_agent (Transact-SQL) para crear el trabajo con el que se ejecuta el Agente de distribución en el suscriptor.
sp_addmergepullsubscription_agent:
Ahora debe proporcionar las credenciales de Windows como @job_login y @job_password al ejecutar sp_addmergepullsubscription_agent (Transact-SQL) para crear el trabajo con el que se ejecuta el Agente de mezcla en el suscriptor.
sp_addlogreader_agent:
Ahora debería ejecutar sp_addlogreader_agent (Transact-SQL) para agregar manualmente el trabajo y proporcionar las credenciales de Windows con las que se ejecuta el Agente de registro del log en el distribuidor. En versiones de SQL Server anteriores a SQL Server 2005, esto se hacía automáticamente cuando se creó una publicación transaccional.
sp_addqreader_agent:
Ahora debería ejecutar sp_addqreader_agent (Transact-SQL) para agregar manualmente el trabajo y proporcionar las credenciales de Windows con las que se ejecuta el Agente de lectura de cola en el distribuidor. En versiones de SQL Server anteriores a SQL Server 2005, esto se hacía automáticamente cuando se creó una publicación transaccional que admitía la actualización en cola.
En el modelo de seguridad introducido en SQL Server 2005, los agentes de replicación siempre realizan conexiones a la instancia local de SQL Server con la autenticación de Windows mediante las credenciales proporcionadas en @job_name y @job_password. Para obtener información sobre los requisitos de cuentas de Windows utilizadas al ejecutar los trabajos del Agente de replicación, vea Replication Agent Security Model.
Importante
Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si almacena las credenciales en un archivo de script, asegúrese de que dicho archivo está protegido.
Para actualizar scripts que configuran una instantánea o publicación transaccional
En el script existente, antes de sp_addpublication (Transact-SQL), ejecute sp_addlogreader_agent (Transact-SQL) en el publicador de la base de datos de publicación. Especifique las credenciales de Windows con las que se ejecuta el Agente de registro del LOG @job_name y @job_password. Si el agente usará SQL Server autenticación al conectarse al publicador, también debe especificar un valor de 0 para @publisher_security_mode y la información de inicio de sesión de SQL Server para @publisher_login y @publisher_password. Con ello se crea un trabajo del Agente de registro del LOG para la base de datos de publicación.
Nota:
Este paso es solo para las publicaciones transaccionales y no se requiere para las publicaciones de instantáneas.
(Opcional) Antes de sp_addpublication (Transact-SQL), ejecute sp_addqreader_agent (Transact-SQL) en el distribuidor de la base de datos de distribución. Especifique las credenciales de Windows con las que se ejecuta el Agente de lectura de cola @job_name y @job_password. Con ello se crea un trabajo del Agente de lectura de cola para el distribuidor.
Nota
Este paso solamente se requiere para las publicaciones transaccionales que admiten los suscriptores de actualización en cola.
(Opcional) Actualice la ejecución de sp_addpublication (Transact-SQL) para establecer los valores no predeterminados de los parámetros que implementan nuevas funcionalidades de replicación.
Después de sp_addpublication (Transact-SQL), ejecute sp_addpublication_snapshot (Transact-SQL) en el publicador de la base de datos de publicación. Especifique @publication y las credenciales de Windows con las que se ejecuta el Agente de instantáneas para @job_name y @job_password. Si el agente usará SQL Server autenticación al conectarse al publicador, también debe especificar un valor de 0 para @publisher_security_mode y la información de inicio de sesión de SQL Server para @publisher_login y @publisher_password. Esto crea un trabajo de Agente de instantáneas para la publicación.
(Opcional) Actualice la ejecución de sp_addarticle (Transact-SQL) para establecer los valores no predeterminados de los parámetros que implementan nuevas funcionalidades de replicación.
Para actualizar scripts que agregan suscripciones a una instantánea o publicación transaccional
Después de ejecutar el procedimiento almacenado que crea la suscripción, asegúrese de que ejecuta el procedimiento almacenado que crea un trabajo de Agente de distribución para sincronizar la suscripción. El procedimiento almacenado que utilice dependerá del tipo de suscripción.
Para una suscripción de extracción, actualice la ejecución de sp_addpullsubscription_agent (Transact-SQL) para proporcionar las credenciales de Windows con las que se ejecuta el Agente de distribución en el suscriptor para @job_name y @job_password. Esto se hace después de la ejecución de sp_addpullsubscription. Para obtener más información, consulte Create a Pull Subscription.
Para una suscripción de inserción, ejecute sp_addpushsubscription_agent (Transact-SQL) en el publicador. Especifique @subscriber, @subscriber_db, @publication, credenciales de Windows bajo las que se ejecuta el Agente de distribución en el distribuidor para @job_name y @job_password, y una programación para este trabajo del agente. Para obtener más información, consulte Specify Synchronization Schedules. Esto se hace después de la ejecución de sp_addsubscription. Para obtener más información, consulte Create a Push Subscription.
Para actualizar scripts que configuran una publicación de combinación
(Opcional) En el script existente, actualice la ejecución de sp_addmergepublication (Transact-SQL) para establecer los valores no predeterminados de los parámetros que implementan nuevas funcionalidades de replicación.
Después de sp_addmergepublication (Transact-SQL), ejecute sp_addpublication_snapshot (Transact-SQL) en el publicador de la base de datos de publicación. Especifique @publication y las credenciales de Windows con las que se ejecuta el Agente de instantáneas para @job_name y @job_password. Si el agente usará SQL Server autenticación al conectarse al publicador, también debe especificar un valor de 0 para @publisher_security_mode y la información de inicio de sesión de SQL Server para @publisher_login y @publisher_password. Esto crea un trabajo de Agente de instantáneas para la publicación.
(Opcional) Actualice la ejecución de sp_addmergearticle (Transact-SQL) para establecer los valores no predeterminados de los parámetros que implementan nuevas funcionalidades de replicación.
Para actualizar scripts que agregan suscripciones a una publicación de combinación
Después de ejecutar el procedimiento almacenado que crea la suscripción, asegúrese de que ejecuta el procedimiento almacenado que crea un trabajo de Agente de mezcla para sincronizar la suscripción. El procedimiento almacenado que utilice dependerá del tipo de suscripción.
Para una suscripción de extracción, actualice la ejecución de sp_addmergepullsubscription_agent (Transact-SQL) para proporcionar las credenciales de Windows con las que se ejecuta el Agente de mezcla en el suscriptor para @job_name y @job_password. Esto se hace después de la ejecución de sp_addmergepullsubscription. Para obtener más información, consulte Create a Pull Subscription.
Para una suscripción de inserción, ejecute sp_addmergepushsubscription_agent (Transact-SQL) en el publicador. Especifique @subscriber, @subscriber_db, @publication, las credenciales de Windows bajo las que se ejecuta el Agente de mezcla en el distribuidor para @job_name y @job_password, y una programación para este trabajo del agente. Para obtener más información, consulte Specify Synchronization Schedules. Esto se hace después de la ejecución de sp_addmergesubscription. Para obtener más información, consulte Create a Push Subscription.
Ejemplo
A continuación se muestra un ejemplo de un script SQL Server 2000 que crea una publicación transaccional para la tabla Product. Esta publicación admite la actualización inmediata con actualización en cola como conmutación por error. Los parámetros predeterminados se han quitado para mayor legibilidad.
USE [Northwind]
GO
DECLARE @publication AS sysname
DECLARE @publicationDB AS sysname
DECLARE @article AS sysname
SET @publication = N'NwdProductTran'
SET @publicationDB = N'Northwind'
SET @article = N'Products'
-- Enable the replication database.
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'publish',
@value = N'true'
-- Add the transactional publication.
EXEC sp_addpublication
@publication = @publication,
@sync_method = N'native',
@status = N'active',
@repl_freq = N'continuous',
@description = N'Transactional publication of Northwind.',
@allow_push = N'true',
@allow_pull = N'true',
@allow_sync_tran = N'true',
@autogen_sync_procs = N'true',
@allow_queued_tran = N'true'
-- Add a snapshot job.
EXEC sp_addpublication_snapshot
@publication = @publication
-- Add the transactional articles.
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@destination_table = @article,
@type = N'logbased',
@schema_option = 0x00000000000080F3,
@ins_cmd = N'CALL sp_MSins_Products',
@del_cmd = N'XCALL sp_MSdel_Products',
@upd_cmd = N'XCALL sp_MSupd_Products',
@auto_identity_range = N'false'
GO
Ejemplo
A continuación se muestra un ejemplo de actualización del script anterior, que crea una publicación transaccional, para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Esta publicación admite la actualización inmediata con actualización en cola como conmutación por error. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. 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 at the Distributor.
USE [distribution]
DECLARE @login AS sysname;
DECLARE @password AS sysname;
-- Specify the Windows account to run the Queue Reader Agent.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- Execute sp_addqreader_agent to create the Queue Reader Agent job.
EXEC sp_addqreader_agent
@job_login = @login,
@job_password = @password;
GO
-- Execute at the Publisher.
USE [Northwind]
GO
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publicationDB = N'Northwind';
SET @article = N'Products';
-- Specify the Windows account to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- Enable the replication database.
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Add the transactional publication.
EXEC sp_addpublication
@publication = @publication,
@sync_method = N'native',
@repl_freq = N'continuous',
@status = N'active',
@description = N'Transactional publication of Northwind.',
@allow_push = N'true',
@allow_pull = N'true',
@allow_sync_tran = N'true',
@autogen_sync_procs = N'true',
@allow_queued_tran = N'true',
@replicate_ddl = 1,
@enabled_for_p2p = N'false';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Add a transactional article.
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@destination_table = @article,
@type = N'logbased',
@schema_option = 0x00000000000080F3,
@ins_cmd = N'CALL sp_MSins_Products',
@del_cmd = N'XCALL sp_MSdel_Products',
@upd_cmd = N'XCALL sp_MSupd_Products',
@auto_identity_range = N'false',
@identityrangemanagementoption = N'manual',
@fire_triggers_on_snapshot = N'false';
GO
Ejemplo
A continuación se muestra un ejemplo de un script SQL Server 2000 que crea una publicación de combinación para la tabla Customers. Los parámetros predeterminados se han quitado para mayor legibilidad.
-- Enable the replication database.
USE [Northwind]
GO
DECLARE @publicationDB AS sysname
DECLARE @publication AS sysname
DECLARE @article AS sysname
SET @publicationDB = N'Northwind'
SET @publication = N'NwdCustomersMerge'
SET @article = N'Customers'
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'merge publish',
@value = N'true'
-- Add the merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of Northwind.',
@retention = 14,
@sync_mode = N'native',
@centralized_conflicts = N'true',
@dynamic_filters = N'false',
@keep_partition_changes = N'false'
EXEC sp_addpublication_snapshot
@publication = @publication
-- Add the merge articles.
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@type = N'table',
@description = null,
@column_tracking = N'true',
@schema_option = 0x000000000000CFF1
GO
Ejemplo
A continuación se muestra un ejemplo del script anterior, que crea una publicación de combinación, actualizada para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. 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".
-- Enabling the replication database
-- Enable the replication database.
USE [Northwind]
GO
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'Northwind';
SET @publication = N'NwdCustomersMerge';
SET @article = N'Customers';
-- Specify the Windows account to run the Snapshot Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'merge publish',
@value = N'true';
-- Add the merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of Northwind.',
@retention = 14,
@sync_mode = N'native',
@dynamic_filters = N'false',
@keep_partition_changes = N'false',
-- Only set to '90RTM' if all Subscribers are SQL Server 2005.
@publication_compatibility_level = N'90RTM',
@replicate_ddl = 1,
@allow_subscriber_initiated_snapshot = N'true',
@allow_web_synchronization = N'false',
@allow_partition_realignment = N'true',
@retention_period_unit = N'day',
@automatic_reinitialization_policy = 0,
@conflict_logging = N'both';
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Add the merge article.
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@type = N'table',
@description = null,
@column_tracking = N'true',
@schema_option = 0x0000000000034FD1,
@partition_options = 0,
@subscriber_upload_options = 0,
@identityrangemanagementoption = N'manual',
@delete_tracking = N'true',
@compensate_for_errors = N'false',
@stream_blob_columns = N'true';
GO
Ejemplo
A continuación se muestra un ejemplo de un script SQL Server 2000 que crea una suscripción de inserción a una publicación transaccional. Los parámetros predeterminados se han quitado para mayor legibilidad.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran'
SET @subscriber = N'MYSUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push'
GO
Ejemplo
A continuación se muestra un ejemplo del script anterior, que crea una suscripción de inserción a una publicación transaccional, actualizada para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota:
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
-- Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = @login,
@job_password = @password;
GO
Ejemplo
A continuación se muestra un ejemplo de un script de SQL Server 2000 que crea una suscripción de inserción a una publicación de combinación. Los parámetros predeterminados se han quitado para mayor legibilidad.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
Ejemplo
A continuación se muestra un ejemplo del script anterior, que crea una suscripción de inserción a una publicación de combinación, actualizada para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push';
-- Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = @login,
@job_password = @password;
GO
Ejemplo
A continuación se muestra un ejemplo de un script de SQL Server 2000 que crea una suscripción de extracción a una publicación transaccional. Los parámetros predeterminados se han quitado para mayor legibilidad.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
Ejemplo
A continuación se muestra un ejemplo del script anterior, que crea una suscripción de extracción a una publicación transaccional, actualizada para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- 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 at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publisher = $(Publisher);
SET @publicationDB = N'Northwind';
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [NorthwindReplica]
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@subscription_type = N'pull';
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = @login,
@job_password = @password;
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Add a pull subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull';
GO
Ejemplo
A continuación se muestra un ejemplo de un script de SQL Server 2000 que crea una suscripción de extracción a una publicación de combinación. Los parámetros predeterminados se han quitado para mayor legibilidad.
-- Execute at the Subscriber
DECLARE @publication AS sysname
DECLARE @publisher AS sysname
DECLARE @publicationDB AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @publisher = N'PUBSERVER'
SET @publicationDB = N'Northwind'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [NorthwindReplica]
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,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@distributor = @publisher
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'MYSUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'pull',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
Ejemplo
A continuación se muestra un ejemplo del script anterior, que crea una suscripción de extracción a una publicación de combinación, actualizada para que se ejecute correctamente para SQL Server 2005 y versiones posteriores. Los valores predeterminados de los nuevos parámetros se ha declarado explícitamente.
Nota
Las credenciales de Windows se proporcionan en el tiempo de ejecución mediante las variables de scripting sqlcmd .
-- 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 at the Subscriber
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @publisher = $(Publisher);
SET @publicationDB = N'Northwind';
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [NorthwindReplica]
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;
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'pull',
@subscriber_type = N'local',
@sync_type = N'automatic';
GO
Consulte también
Create a Publication (Creación de una publicación)
Create a Push Subscription (Creación de una suscripción de inserción)
Crear una suscripción de extracción
Ver y modificar la configuración de seguridad de la replicación
MSSQL_ENG021797
MSSQL_ENG021798
Conceptos de procedimientos almacenados del sistema de replicación
Actualizar bases de datos replicadas