Compartir a través de


Crear una suscripción actualizable a una publicación transaccional (Management Studio)

Nota:

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

La replicación transaccional permite que los cambios realizados en un suscriptor se retransmitan al publicador mediante suscripciones de actualización inmediatas o en cola. Puede crear una suscripción de actualización programáticamente utilizando procedimientos almacenados de replicación.

Configure suscripciones actualizables en la página Suscripciones actualizables del Asistente para nueva suscripción. Esta página solo está disponible si ha habilitado una publicación transaccional para suscripciones actualizables. Para obtener más información sobre cómo habilitar suscripciones actualizables, vea Habilitar suscripciones de actualización para publicaciones transaccionales.

Configuración de una suscripción actualizable desde el publicador

  1. Conéctese al publicador en Microsoft SQL Server Management Studio y, a continuación, expanda el nodo de servidor.

  2. Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .

  3. Haga clic con el botón derecho en una publicación transaccional habilitada para actualizar suscripciones y, a continuación, haga clic en Nuevas suscripciones.

  4. Siga las páginas del asistente para especificar las opciones de la suscripción, como dónde se debe ejecutar el Agente de distribución.

  5. En la página Suscripciones actualizables del Asistente para nueva suscripción, asegúrese de que la opción Replicar está seleccionada.

  6. Seleccione una opción en la lista desplegable Confirmación en el Publicador

    • Para usar suscripciones de actualización inmediata, seleccione Confirmación simultánea de cambios. Si selecciona esta opción y la publicación permite suscripciones con actualización en espera (el valor predeterminado para las publicaciones creadas con el Asistente para la creación de nuevas publicaciones), la propiedad de suscripción update_mode se establece en failover. Este modo permite cambiar a la actualización en cola más adelante si es necesario.
    • Para usar suscripciones de actualización en cola, seleccione Cambios en cola y confirme cuando sea posible. Si selecciona esta opción y la publicación permite suscripciones de actualización inmediata (el valor predeterminado para las publicaciones creadas con el Asistente para Nueva Publicación) y el Suscriptor ejecuta SQL Server 2005 o una versión posterior, el modo de actualización de la propiedad de suscripción update_mode se establece en modo de transferencia en cola. Este modo le permite cambiar a la actualización inmediata más adelante si es necesario.

    Para obtener información sobre cómo cambiar los modos de actualización, vea Cambiar entre modos de actualización para una suscripción transaccional actualizable.

  7. La página Inicio de sesión para suscripciones actualizables se muestra para las suscripciones que utilizan la actualización inmediata o que tienen update_mode establecido en el modo conmutación por error en cola. En la página Iniciar sesión para suscripciones actualizables, especifique un servidor vinculado para realizar conexiones directamente con el Publicador en suscripciones de actualización inmediata. Las conexiones son utilizadas por los desencadenadores que se activan en el suscriptor y propagan los cambios al publicador. Seleccione una de las siguientes opciones:

    • Cree un servidor vinculado que se conecte mediante la autenticación de SQL Server. Seleccione esta opción si no ha definido un servidor remoto o un servidor vinculado entre el suscriptor y el publicador. La replicación crea un servidor vinculado automáticamente. La cuenta que especifique ya debe existir en el publicador.
    • Use un servidor vinculado o un servidor remoto que ya haya definido. Seleccione esta opción si ha definido un servidor remoto o un servidor vinculado entre el suscriptor y el publicador mediante sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio u otro método.

    Para obtener información sobre los permisos que requiere la cuenta de servidor vinculado, consulte las Suscripciones de actualización en cola de introduzca la descripción del enlace aquí.

  8. Complete el asistente de configuración.

Configura una suscripción actualizable desde el suscriptor

  1. Conéctese al suscriptor en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.

  2. Expanda la carpeta Replicación .

  3. Haga clic con el botón derecho en la carpeta Suscripciones locales y, a continuación, haga clic en Nuevas suscripciones.

  4. En la página Publicación del Asistente para nueva suscripción, seleccione Buscar publicador de SQL Server en la lista desplegable Publicador .

  5. Conéctese al publicador en el cuadro de diálogo Conectar al servidor .

  6. Seleccione una publicación transaccional habilitada para actualizar suscripciones en la página Publicación .

  7. Siga las páginas del asistente para especificar las opciones de la suscripción, como dónde se debe ejecutar el Agente de distribución.

  8. En la página Suscripciones actualizables del Asistente para nueva suscripción, asegúrese de que la opción Replicar está seleccionada.

  9. Seleccione una opción en la lista desplegable Publicar en el Editor:

    • Para usar suscripciones de actualización inmediata, seleccione Confirmación simultánea de cambios. Si selecciona esta opción y la publicación permite suscripciones de actualización en cola (el valor predeterminado para las publicaciones creadas con el Asistente para la creación de nuevas publicaciones), la propiedad de suscripción update_mode se establece en failover. Este modo permite cambiar a la actualización en cola más adelante si es necesario.
    • Para usar suscripciones de actualización en cola, seleccione Cambios en cola y confirme cuando sea posible. Si selecciona esta opción, y la publicación permite suscripciones con actualización inmediata (el valor predeterminado para las publicaciones creadas con el Asistente para nueva publicación), y el suscriptor ejecuta SQL Server 2005 o una versión posterior, la propiedad de suscripción update_mode se establece en modo en cola de conmutación por error. Este modo le permite cambiar a la actualización inmediata más adelante si es necesario.

    Para obtener información sobre cómo cambiar los modos de actualización, vea Cambiar entre modos de actualización para una suscripción transaccional actualizable.

  10. La página Inicio de sesión para suscripciones actualizables se muestra para las suscripciones que usan la actualización inmediata o que tienen update_mode establecer en conmutación por error en cola. En la página Login for Updatable Subscriptions (Iniciar sesión para suscripciones actualizables), especifique un servidor vinculado a través del cual se realizan las conexiones al publicador para suscripciones de actualización instantánea. Las conexiones son utilizadas por los desencadenadores que se activan en el Suscriptor y propagan los cambios al Publicador. Seleccione una de las siguientes opciones:

    • Cree un servidor vinculado que se conecte mediante la autenticación de SQL Server. Seleccione esta opción si no ha definido un servidor remoto o un servidor vinculado entre el suscriptor y el publicador. La replicación crea un servidor vinculado para usted. La cuenta que especifique ya debe existir en el publicador.
    • Use un servidor vinculado o un servidor remoto que ya haya definido. Seleccione esta opción si ha definido un servidor remoto o un servidor vinculado entre el suscriptor y el publicador mediante sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio u otro método.

    Para obtener información sobre los permisos que necesita la cuenta del servidor vinculado, consulte las Suscripciones de actualización en cola de enter link description here.

  11. Complete el asistente de configuración.

Crear una suscripción de extracción con actualización inmediata

  1. En el publicador, compruebe que la publicación admite suscripciones de actualización inmediata ejecutando sp_helppublication.

    • Si el valor de allow_sync_tran en el conjunto de resultados es 1, la publicación permite suscripciones de actualización inmediata.
    • Si el valor de allow_sync_tran en el conjunto de resultados es 0, la publicación debe recrearse con las suscripciones de actualización inmediata habilitadas.
  2. En el Publicador, compruebe que la publicación admite suscripciones de arrastre ejecutando sp_helppublication.

    • Si el valor de allow_pull en el conjunto de resultados es 1, la publicación admite suscripciones de descarga.
    • Si el valor de allow_pull es 0, ejecute sp_changepublication, especificando allow_pull para @property y true para @value.
  3. En el suscriptor, ejecute sp_addpullsubscription. Especifique @publisher y @publication, y uno de los siguientes valores para @update_mode:

    • sync tran : habilita la suscripción para la actualización inmediata.
    • failover - habilita la suscripción para la actualización inmediata, con la actualización en espera como opción de conmutación por error.

    Nota:

failover requiere que la publicación también esté habilitada para las suscripciones de actualización en cola.

  1. En el suscriptor, ejecute sp_addpullsubscription_agent. Especifique lo siguiente:

    • Los parámetros @publisher, @publisher_db y @publication.
    • Las credenciales de Microsoft Windows con las que se ejecuta el Agente de distribución en el suscriptor para @job_login y @job_password.

    Nota:

Las conexiones realizadas mediante la autenticación integrada de Windows siempre se realizan mediante las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local al suscriptor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conecta al distribuidor mediante la autenticación integrada de Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the Microsoft SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription. 
  1. En el suscriptor de la base de datos de suscripciones, ejecute sp_link_publication. Especifique @publisher, @publication, el nombre de la base de datos de publicación para @publisher_dby uno de los siguientes valores para @security_mode:

    • 0 - Use la autenticación de SQL Server al realizar actualizaciones en el publicador. Esta opción requiere que especifique un inicio de sesión válido en el publicador para @login y @password.
    • 1 - Use el contexto de seguridad del usuario que realiza cambios en el suscriptor al conectarse al publicador. Consulte sp_link_publication para obtener restricciones relacionadas con este modo de seguridad.
    • 2 - Use un inicio de sesión de servidor vinculado existente y definido por el usuario creado mediante sp_addlinkedserver.
  2. En el publicador, ejecute sp_addsubscription especificando @publication, @subscriber, @destination_db, un valor de extracción para @subscription_type, y el mismo valor especificado en el paso 3 para @update_mode.

Esto registra la suscripción de extracción en el publicador.

Crear una suscripción push de actualización inmediata

  1. En el publicador, compruebe que la publicación admite suscripciones de actualización inmediata ejecutando sp_helppublication.

    • Si el valor de allow_sync_tran en el conjunto de resultados es 1, la publicación admite suscripciones de actualización inmediata.
    • Si el valor de allow_sync_tran en el conjunto de resultados es 0, la publicación debe volver a crearse con las suscripciones de actualización inmediata habilitadas.
  2. En el Publicador, compruebe que la publicación admite suscripciones de inserción ejecutando sp_helppublication.

    • Si el valor de allow_push en el conjunto de resultados es 1, la publicación admite suscripciones push.
    • Si el valor de allow_push es 0, ejecute sp_changepublication, especificando allow_push para @property y true para @value.
  3. En el Publicador, ejecute sp_addsubscription. Especifique @publication, @subscriber, @destination_dby uno de los siguientes valores para @update_mode:

    • sync tran - permite el soporte para la actualización inmediata.
    • failover - permite soporte para la actualización inmediata, con la actualización en cola como opción de respaldo.

    Nota:

failover requiere que la publicación también esté habilitada para las suscripciones de actualización en cola.

  1. En el publicador, ejecute sp_addpushsubscription_agent. Especifique los parámetros siguientes:

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

    Nota:

Las conexiones realizadas mediante la autenticación integrada de Windows siempre se realizan mediante las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local al distribuidor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conectará al suscriptor mediante la autenticación integrada de Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.
  1. En el suscriptor de la base de datos de suscripciones, ejecute sp_link_publication. Especifique @publisher, @publication, el nombre de la base de datos de publicación para @publisher_dby uno de los siguientes valores para @security_mode:

    • 0 - Use la autenticación de SQL Server al realizar actualizaciones en el publicador. Esta opción requiere que especifique un inicio de sesión válido en el publicador para @login y @password.
    • 1 - Use el contexto de seguridad del usuario que realiza cambios en el Suscriptor al conectarse al Publicador. Consulte sp_link_publication para obtener restricciones relacionadas con este modo de seguridad.
    • 2 - Use un inicio de sesión de servidor vinculado existente definido por el usuario creado mediante sp_addlinkedserver.

Creación de una suscripción de extracción de actualización en cola

  1. En el publicador, compruebe que la publicación admite suscripciones de actualización en espera ejecutando sp_helppublication.

    • Si el valor de allow_queued_tran en el conjunto de resultados es 1, la publicación admite suscripciones que permiten actualizaciones inmediatas.
    • Si el valor de allow_queued_tran en el conjunto de resultados es 0, la publicación debe volver a crearse habilitando suscripciones de actualización en cola.
  2. En el publicador, compruebe que la publicación admite suscripciones de extracción ejecutando sp_helppublication.

    • Si el valor de allow_pull en el conjunto de resultados es 1, la publicación admite suscripciones de arrastre.
    • Si el valor de allow_pull es 0, ejecute sp_changepublication, especificando allow_pull para @property y true para @value.
  3. En el suscriptor, ejecute sp_addpullsubscription. Especifique @publisher y @publication, y uno de los siguientes valores para @update_mode:

    • queued tran - habilita la suscripción para la actualización en cola de espera.
    • queued failover: permite la compatibilidad para la actualización en cola y ofrece la actualización inmediata como alternativa de respaldo.

    Nota:

queued failover requiere que la publicación también esté habilitada para las suscripciones de actualización inmediata. Para realizar una conmutación al modo de actualización inmediata, debe usar sp_link_publication para definir las credenciales bajo las cuales los cambios en el suscriptor se replican al publicador.

  1. En el suscriptor, ejecute sp_addpullsubscription_agent. Especifique los parámetros siguientes:

    • @publisher, @publisher_dby @publication.
    • Las credenciales de Windows con las que se ejecuta el Agente de distribución en el Suscriptor para @job_login y @job_password.

    Nota:

Las conexiones realizadas mediante la autenticación integrada de Windows siempre se realizan mediante las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local al suscriptor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conecta al distribuidor mediante la autenticación integrada de Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription.
  1. En el publicador, ejecute sp_addsubscriber para registrar el suscriptor en el publicador, especificando @publication, @subscriber@destination_db, , un valor de extracción para @subscription_typey el mismo valor especificado en el paso 3 para @update_mode.

Esto registra la suscripción de extracción de datos en el Publicador.

Para crear una suscripción push de actualización en cola

  1. En el publicador, compruebe que la publicación admite suscripciones de actualización en cola ejecutando sp_helppublication.

    • Si el valor de allow_queued_tran en el conjunto de resultados es 1, la publicación admite la actualización inmediata de suscripciones.
    • Si el valor de allow_queued_tran en el conjunto de resultados es 0, la publicación debe volver a crearse con suscripciones de actualización en cola habilitadas. Para obtener más información, consulte Cómo habilitar las suscripciones de actualización para publicaciones transaccionales (Programación de replicación Transact-SQL).
  2. En el publicador, compruebe que la publicación admite suscripciones push ejecutando sp_helppublication.

    • Si el valor de allow_push en el conjunto de resultados es 1, la publicación admite suscripciones push.
    • Si el valor de allow_push es 0, ejecute sp_changepublication, especificando allow_push para @property y true para @value.
  3. En el publicador, ejecute sp_addsubscription. Especifique @publication, @subscriber, @destination_dby uno de los siguientes valores para @update_mode:

    • queued tran - habilita la suscripción para la actualización en cola.
    • queued failover - permite soporte para la actualización en cola, con la actualización inmediata como opción de respaldo en caso de fallo.

    Nota:

La opción de conmutación por error en cola requiere que la publicación también esté habilitada para suscripciones de actualización inmediata. Para cambiar a la actualización inmediata, debe usar sp_link_publication para definir las credenciales bajo las cuales se replican los cambios en el suscriptor al publicador.

  1. En el publicador, ejecute sp_addpushsubscription_agent. Especifique los parámetros siguientes:

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

    Nota:

Las conexiones realizadas mediante la autenticación integrada de Windows siempre se realizan mediante las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local al distribuidor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conecta al suscriptor mediante la autenticación integrada de Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.

Ejemplo

En este ejemplo, se establece una suscripción de actualización inmediata a una publicación que admite suscripciones de actualización inmediata. Los valores de inicio de sesión y contraseña se proporcionan en tiempo de ejecución mediante variables de scripting sqlcmd.

Nota:

Este script usa variables de scripting sqlcmd. Están en el formato $(MyVariable). Para obtener información sobre cómo usar variables de scripting en la línea de comandos y en SQL Server Management Studio, vea la sección Ejecución de scripts de replicación en el tema Conceptos de procedimientos almacenados del sistema de replicación.

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2008R2';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 

-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2008R2;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

Configurar las opciones de resolución de conflictos para la actualización intermediada (SQL Server Management Studio)

Establezca las opciones de resolución de conflictos para las publicaciones que admiten suscripciones con actualización en cola en la página Opciones de suscripción del cuadro de diálogo Propiedades de la publicación - <Publicación>. Para obtener más información sobre cómo obtener acceso a este cuadro de diálogo, vea Ver y modificar propiedades de publicación.

Para establecer las opciones de resolución de conflictos de actualización pendientes

  1. En la página Opciones de suscripción del cuadro de diálogo Propiedades de la publicación : <publicación> , seleccione uno de los siguientes valores para la opción Directiva de resolución de conflictos :
    • Mantener el cambio del publicador
    • Mantener el cambio del suscriptor
    • Reinicialización de la suscripción
  2. Haz clic en Aceptar.

Véase también

Create a Publication (Creación de una publicación)
Suscripciones actualizables para la replicación transaccional
Usar sqlcmd con variables de script