Compartir por


Crear una suscripción para un suscriptor que no sea de SQL Server

Se aplica a: SQL Server

En este tema se describe cómo crear una suscripción para un suscriptor que no sea de SQL Server en SQL Server mediante SQL Server Management Studio o Transact-SQL. La replicación transaccional y la de instantáneas admiten la publicación de datos en suscriptores que no son de SQL Server. Para obtener más información sobre plataformas de suscriptores admitidos, vea Non-SQL Server Subscribers.

En este tema

Uso de SQL Server Management Studio

Para crear una suscripción para un suscriptor que no sea de SQL Server:

  1. Instale y configure el software de cliente y el proveedor o proveedores OLE DB adecuados en el distribuidor de SQL Server. Para obtener más información, consulte Suscriptores de Oracle y Suscriptores de IBM Db2.

  2. Cree una publicación mediante el Asistente para nueva publicación. Para obtener información sobre cómo crear una publicación de una base de datos de Oracle, vea Crear una publicación a partir de una base de datos de Oracle y Crear una publicación a partir de una base de datos de Oracle. En el Asistente para nueva publicación, especifique las siguientes opciones:

    • En la página Tipo de publicación , seleccione Publicación de instantáneas o Publicación transaccional.

    • En la página Agente de instantáneas , desactive Crear una instantánea inmediatamente.

      La instantánea se crea una vez habilitada la publicación para los suscriptores que no son de SQL Server a fin de garantizar que el Agente de instantáneas genera scripts de inicialización e instantáneas adecuados para los suscriptores que no son de SQL Server.

  3. Habilitar la publicación para los suscriptores que no son de SQL Server mediante el cuadro de diálogo Propiedades de la publicación: <nombreDePublicación>. Para obtener más información acerca de este paso, vea Publication Properties, Subscription Options .

  4. Cree una suscripción mediante el Asistente para nuevas suscripciones. En este tema se proporciona más información acerca de este paso.

  5. (Opcional) Cambie la propiedad de artículo pre_creation_cmd para conservar las tablas en el suscriptor. En este tema se proporciona más información acerca de este paso.

  6. Genere una instantánea para la publicación. En este tema se proporciona más información acerca de este paso.

  7. Sincronice la suscripción. Para obtener más información, consulte Synchronize a Push Subscription.

Para habilitar una publicación para suscriptores que no son de SQL Server

  1. Conéctese al publicador en 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 secundario en la publicación y, a continuación, haga clic en Propiedades.

  4. En la página Opciones de suscripción , seleccione el valor True para la opción Permitir suscriptores que no sean de SQL. Al seleccionar esta opción, se modifican una serie de propiedades para que la publicación sea compatible con suscriptores que no son de SQL Server.

    Nota:

    Al seleccionar True se asigna el valor 'drop' a la propiedad de artículo pre_creation_cmd . El valor mencionado indica que la replicación debe quitar una tabla en el suscriptor si coincide con el nombre de la tabla del artículo. Si en el suscriptor existen tablas que desea conservar, use el procedimiento almacenado sp_changearticle para cada artículo; asigne el valor 'none' a pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Seleccione Aceptar. Se le pedirá que cree una nueva instantánea para la publicación. Si no desea crear ninguna en este momento, siga los pasos descritos en el procedimiento correspondiente más adelante.

Para crear una suscripción para un suscriptor que no sea de SQL Server

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

  2. Haga clic con el botón secundario en la publicación correspondiente y, a continuación, haga clic en Nuevas suscripciones.

  3. En la página Ubicación del Agente de distribución , asegúrese de que la opción Ejecutar todos los agentes en el distribuidor está seleccionada. Los suscriptores que no son de SQL Server no pueden ejecutar agentes en el suscriptor.

  4. En la página Suscriptores , haga clic en Agregar suscriptor y, a continuación, haga clic en Agregar suscriptor que no sea de SQL Server.

  5. En el cuadro de diálogo Agregar suscriptor que no sea de SQL Server , seleccione el tipo de suscriptor.

  6. Especifique un valor en Nombre del origen de datos:

    • Para Oracle, es el nombre TNS (transparent network substrate) configurado.

    • Para IBM, puede ser cualquier nombre. Lo habitual es especificar la dirección de red del suscriptor.

    El asistente no valida el nombre del origen de datos especificado en este paso ni las credenciales del paso 9. No se utilizan para la replicación hasta que se ejecuta el Agente de distribución para la suscripción. Asegúrese de que haber comprobado todos los valores conectándose al suscriptor mediante una herramienta cliente (como sqlplus para Oracle). Para obtener más información, consulte Suscriptores de Oracle y Suscriptores de IBM Db2.

  7. Seleccione Aceptar. En la página Suscriptores del asistente, el suscriptor aparece en la columna Suscriptor con un (destino predeterminado) de solo lectura en la columna Base de datos de suscripciones :

    • En Oracle, un servidor tiene como máximo una base de datos, por lo que no es necesario especificarla.

    • Para IBM Db2, la base de datos se especifica en la propiedad Catálogo inicial de la cadena de conexión DB2, la cual puede indicarse en el campo Opciones de conexión adicionales que se describe más adelante en este proceso.

  8. En la página Seguridad del Agente de distribución , haga clic en el botón de propiedades () situado junto al suscriptor para obtener acceso al cuadro de diálogo Seguridad del Agente de distribución .

  9. En el cuadro de diálogo Seguridad del Agente de distribución :

    • En los campos Cuenta de proceso, Contraseña y Confirmar contraseña, especifique la cuenta y contraseña de Microsoft Windows con las que se deberá ejecutar el Agente de distribución y establecer las conexiones locales al distribuidor.

      La cuenta requiere los siguientes permisos mínimos: miembro del rol fijo de base de datos db_owner de la base de datos de distribución; miembro de la lista de acceso a la publicación (PAL); disponer de permisos de lectura en el recurso compartido de instantáneas y disponer de permiso de lectura en el directorio de instalación del proveedor OLE DB. Para obtener más información sobre la PAL, vea Secure the Publisher (Proteger el publicador).

    • En Conectar al suscriptor, en los campos Inicio de sesión, Contraseñay Confirmar contraseña , escriba el nombre de inicio de sesión y la contraseña que deben utilizarse para conectar al suscriptor. Este inicio de sesión ya debería estar configurado y disponer de los permisos suficientes para crear objetos en la base de datos de suscripciones.

    • En el campo Opciones de conexión adicionales , especifique cualquier opción de conexión para el suscriptor en forma de cadena de conexión (Oracle no requiere opciones adicionales). Las opciones deben ir separadas con punto y coma. A continuación se ofrece un ejemplo de una cadena de conexión DB2 (se han incluido saltos de línea para facilitar la lectura):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      La mayoría de las opciones de la cadena son específicas para el servidor DB2 que está configurando, pero la opción Process Binary as Character siempre debe establecerse en False. Se requiere un valor para que la opción Catálogo original identifique la base de datos de suscripciones.

  10. En la página Programación de sincronización , seleccione una programación para el Agente de distribución en el menú Programación del agente (la programación suele ser Ejecutar continuamente).

  11. En la página Inicializar suscripciones , especifique si la suscripción debe inicializarse y, en ese caso, cuándo debe llevarse a cabo:

    • Desactive Inicializar únicamente si ha creado todos los objetos y agregado todos los datos necesarios a la base de datos de suscripciones.

    • Seleccione Inmediatamente en la lista desplegable de la columna Inicializar cuando para que el Agente de distribución transfiera los archivos de instantáneas al suscriptor una vez que el asistente haya finalizado. Seleccione En la primera sincronización para que el agente transfiera los archivos la próxima vez que esté programado para ejecutarse.

  12. En la página Acciones del asistente , incluya de forma opcional la suscripción. Para más información, consulte Scripting Replication.

Para conservar las tablas en el suscriptor

  • De forma predeterminada, al habilitar una publicación para suscriptores que no son de SQL Server, se asigna el valor 'drop' a la propiedad de artículo pre_creation_cmd. El valor mencionado indica que la replicación debe quitar una tabla en el suscriptor si coincide con el nombre de la tabla del artículo. Si en el suscriptor existen tablas que desea conservar, use el procedimiento almacenado sp_changearticle para cada artículo; asigne el valor 'none' a pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Para generar una instantánea para la publicación

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

  2. Haga clic con el botón secundario en la publicación y, a continuación, haga clic en Ver estado del agente de instantáneas.

  3. En el cuadro de diálogo Ver estado del Agente de instantáneas: <publicación>, haga clic en Iniciar.

Cuando el Agente de instantáneas termina de generar la instantánea, aparece un mensaje del tipo "[100%] Se ha generado una instantánea de 17 artículos".

Usar Transact-SQL

Puede crear suscripciones de inserción para suscriptores que no sean de SQL Server mediante programación con procedimientos almacenados de replicación.

Importante

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 script, proteja el archivo para evitar el acceso no autorizado.

Para crear una suscripción de inserción para una publicación transaccional o de instantáneas a un suscriptor que no sea de SQL Server

  1. Instale el proveedor OLE DB más reciente para el Suscriptor que no sea de SQL Server en el Publicador y el Distribuidor. Para los requisitos de replicación para un proveedor OLE DB, vea Suscriptores que no son de SQL Server, Suscriptores de Oracle y Suscriptores de IBM Db2.

  2. En el publicador de la base de datos de publicaciones, compruebe que la publicación admita suscripciones que no sean de SQL Server mediante la ejecución de sp_helppublication (Transact-SQL).

    • Si el valor de enabled_for_het_sub es 1, se admiten Suscriptores que no sean de SQL Server.

    • Si el valor de enabled_for_het_sub es 0, ejecute sp_changepublication (Transact-SQL) y especifique enabled_for_het_sub para @property y true para @value.

      Nota:

      Antes de cambiar enabled_for_het_sub a true, debe quitar cualquier suscripción existente en la publicación. No puede establecer enabled_for_het_sub en true cuando la publicación también admite las suscripciones de actualización. El cambio de enabled_for_het_sub afectará a otras propiedades de publicación. Para más información, consulte Non-SQL Server Subscribers.

  3. En el publicador de la base de datos de publicaciones, ejecute sp_addsubscription (Transact-SQL). Especifique @publication, @subscriber, un valor de (default destination) para @destination_db, un valor de push para @subscription_type y un valor de 3 para @subscriber_type (especifica un proveedor OLE DB).

  4. En el publicador de la base de datos de publicaciones, ejecute sp_addpushsubscription_agent (Transact-SQL). Especifique lo siguiente:

    • Los parámetros @subscriber y @publication.

    • Un valor de (destino predeterminado) para @subscriber_db,

    • Las propiedades del origen de datos que no es de SQL Server para @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string y @subscriber_catalog.

    • 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 realizadas 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.

    • Un valor de 0 para @subscriber_security_mode y la información de inicio de sesión del proveedor OLE DB para @subscriber_login y @subscriber_password.

    • Una programación para el trabajo del Agente de distribución de esta suscripción. Para obtener más información, consulte Specify Synchronization Schedules.

    Importante

    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 simple. Antes de ejecutar este procedimiento almacenado, se recomienda cifrar la conexión entre el publicador y su distribuidor remoto. Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).