Compartir a través de


Cómo crear una suscripción de inserción (programación de la réplica con Transact-SQL)

Las suscripciones de inserción pueden crearse mediante programación con procedimientos almacenados de réplica. Los procedimientos almacenados que se usen dependerán del tipo de publicación a la que corresponda la suscripción.

ms146912.security(es-es,SQL.90).gifNota de seguridad:
Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de secuencia de comandos, proteja el archivo para evitar el acceso no autorizado.

Para crear una suscripción de inserción para una publicación de instantáneas o transaccional

  1. En el publicador de la base de datos de publicaciones, compruebe que la publicación admita suscripciones de inserción mediante la ejecución de sp_helppublication.

    • Si el valor de allow_push es 1, se admiten las suscripciones de inserción.
    • Si el valor de allow_push es 0, ejecute sp_changepublication, y especifique allow_push para @property y true para @value.
  2. En el publicador de la base de datos de publicaciones, ejecute sp_addsubscription. Especifique @publication, @subscriber y @destination_db. Especifique un valor push para @subscription_type. Para obtener información acerca de cómo actualizar suscripciones, vea How to: Create an Updatable Subscription to a Transactional Publication (Replication Transact-SQL Programming).

  3. En el publicador de la base de datos de publicaciones, ejecute sp_addpushsubscription_agent. Especifique lo siguiente:

    • Los parámetros @subscriber, @subscriber_db y @publication.

    • Las credenciales de Microsoft Windows con las que se ejecuta el Agente de distribución en el distribuidor para @job_login y @job_password.

      [!NOTA] Las conexiones que se realicen con la Autenticación integrada de Windows siempre usan las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local con el distribuidor mediante la Autenticación integrada de Windows. De forma predeterminada, el agente se conectará con el suscriptor mediante la Autenticación integrada de Windows.

    • (Opcional) El valor 0 para @subscriber_security_mode y la información de inicio de sesión de Microsoft SQL Server para @subscriber_login y @subscriber_password. Especifique estos parámetros si necesita usar Autenticación de SQL Server al conectarse al suscriptor.

    • Una programación para el Agente de distribución para la suscripción. Para obtener más información, vea How to: Specify Synchronization Schedules (Replication Transact-SQL Programming).

    ms146912.security(es-es,SQL.90).gifNota de seguridad:
    Al crear una suscripción de inserción en un publicador con un distribuidor remoto, los valores suministrados para todos los parámetros, incluidos job_login y job_password, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Cifrar conexiones a SQL Server.

Para crear una suscripción de inserción en una publicación de mezcla

  1. En el publicador de la base de datos de publicaciones, compruebe que la publicación admita suscripciones de inserción mediante la ejecución de sp_helpmergepublication.

    • Si el valor de allow_push es 1, la publicación admite operaciones de inserción.
    • Si el valor de allow_push no es 1, ejecute sp_changemergepublication, y especifique allow_push para @property y true para @value.
  2. En el publicador de la base de datos de publicaciones, ejecute sp_addmergesubscription y especifique los siguientes parámetros:

    • @publication. Éste es el nombre de la publicación.
    • @subscriber_type. Para una suscripción de cliente, especifique local y para una suscripción de servidor, especifique global.
    • @subscription_priority. Para una suscripción de servidor, especifique una prioridad para la suscripción (de 0,00 a 99,99).
      Para obtener más información, vea Detección y resolución de conflictos de réplica de mezcla avanzada.
  3. En el publicador de la base de datos de publicaciones, ejecute sp_addmergepushsubscription_agent. Especifique lo siguiente:

    • Los parámetros @subscriber, @subscriber_db y @publication.

    • Las credenciales de Windows con las que se ejecuta el Agente de mezcla en el distribuidor para @job_login y @job_password.

      [!NOTA] Las conexiones que se realicen con la Autenticación integrada de Windows siempre usan las credenciales de Windows especificadas por @job_login y @job_password. El Agente de mezcla siempre realiza la conexión local con el distribuidor mediante la Autenticación integrada de Windows. De forma predeterminada, el agente se conectará con el suscriptor mediante la Autenticación integrada de Windows.

    • (Opcional) El valor 0 para @subscriber_security_mode y la información de inicio de sesión de SQL Server para @subscriber_login y @subscriber_password. Especifique estos parámetros si necesita usar Autenticación de SQL Server al conectarse al suscriptor.

    • (Opcional) El valor 0 para @publisher_security_mode y la información de inicio de sesión de SQL Server para @publisher_login y @publisher_password. Especifique estos valores si necesita usar Autenticación de SQL Server al conectarse al publicador.

    • Una programación para el Agente de mezcla para la suscripción. Para obtener más información, vea How to: Specify Synchronization Schedules (Replication Transact-SQL Programming).

    ms146912.security(es-es,SQL.90).gifNota de seguridad:
    Al crear una suscripción de inserción en un publicador con un distribuidor remoto, los valores suministrados para todos los parámetros, incluidos job_login y job_password, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Cifrar conexiones a SQL Server.

Ejemplo

El siguiente ejemplo crea una suscripción de inserción en una publicación de mezcla. Los valores de inicio de sesión y contraseña se proporcionan en tiempo de ejecución mediante variables de secuencias de comandos de 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;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks]
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

El siguiente ejemplo crea una suscripción de inserción en una publicación de mezcla. Los valores de inicio de sesión y contraseña se proporcionan en tiempo de ejecución mediante variables de secuencias de comandos de 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 @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

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

Vea también

Tareas

Cómo crear una suscripción de extracción (programación de la réplica con Transact-SQL)
Cómo crear una suscripción de inserción (programación RMO)

Otros recursos

Suscribirse a publicaciones
Usar sqlcmd con variables de secuencia de comandos

Ayuda e información

Obtener ayuda sobre SQL Server 2005