Habilitar suscripciones renovables de replicación transaccional en SQL Server 2019

Fecha de creación de la página :

Introducción y precauciones

Este artículo está destinado a la replicación en SQL Server 2019. Una de las funciones en él es "suscripción renovable" está habilitada.

Esta característica estaba habilitada de forma predeterminada en versiones anteriores de SQL Server, pero se ha deshabilitado desde (probablemente) 2017.

Las versiones futuras de SQL Server pueden quitar esta característica. A excepción de la actualización de un entorno existente, se recomienda sustituirlo por una nueva construcción con replicación de combinación, etc.

referencia

medio ambiente

Utilice dos servidores, un servidor y dos SQL Server. Windows Server se encuentra en un estado en el que no se ha realizado ninguna configuración adicional inmediatamente después de la instalación.

1ª unidad (lado de la publicación)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (se requiere Standard Edition o superior)
  • SQL Server Management Studio 18.9.1
Segunda unidad (lado del suscriptor)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

propósito

Incluso si se actualizan los registros de tabla en la primera o segunda base de datos del servidor Asegúrese de que los registros de tabla en los servidores de cada uno estén sincronizados.

Por cierto, uno en el lado de la publicación está bien, pero el lado del suscriptor puede tener cualquier número de unidades. También funciona con varias instancias de SQL Server en un solo servidor.

Instalación de SQL Server

La instalación de SQL Server no es la parte principal de estos consejos, por lo que no entraré en detalles. Solo se enumeran los relevantes para la replicación.

La instalación del lado de la publicación requiere Standard Edition o superior. Este consejo instala Developer Edition como un entorno de prueba.

Los suscriptores están bien con Express Edition. Por supuesto, otras ediciones están bien, dependiendo de la configuración de la base de datos.

En Selección de características, seleccione Servicio motor de base de datos y Replicación de SQL Server. Esto es lo mismo tanto para el lado de la publicación como para el lado del suscriptor.

La configuración de instancia se establece de forma predeterminada tanto en el lado de publicación como en el lado de suscriptor. Incluso si cambia el nombre de la instancia, la diferencia es si especifica o no el nombre de la instancia en la especificación del servidor más adelante.

En el lado de la publicación, configure el Agente SQL Server para que se inicie automáticamente. Puede cambiar esta configuración más adelante.

Esta sugerencia autentica la replicación con la cuenta sa de SQL Server. Por lo tanto, habilite la autenticación de SQL Server. Si no desea usar la cuenta sa por razones de seguridad, reemplace la parte de autenticación de SQL Server de la explicación más adelante con la autenticación de Windows u otra cuenta.

Haga que esta configuración sea la misma en ambos servidores.

Instalación de SQL Server Management Studio

Instale SQL Server Management Studio que descargó. Dado que la pantalla de instalación es solo para instalar, se omite la explicación.

Reinicie Windows si se le pide que reinicie después de la instalación. Además, instale los parches en Windows Update.

Crear una base de datos y tablas del lado de publicación

Si crea una tabla en el lado de publicación, el lado del suscriptor replica automáticamente la tabla o el registro.

El método de creación es el mismo que el procedimiento normal, por lo que omitiré los detalles.

Está creando una base de datos denominada base de datos de publicación en SQL Server Management Studio.

Cree una tabla denominada "Usuarios" y registre las columnas de la siguiente manera: Todo lo que necesita hacer es verificar la sincronización de los registros, por lo que el nombre, el número y el contenido de la columna de la tabla pueden ser cualquier cosa. Sin embargo, solo se requiere la clave principal.

Agregue algunos registros para asegurarse de que los registros se sincronizan después de crear la replicación.

Configuración de conexiones remotas

Configúrelos para permitir el acceso remoto a las bases de datos de los servidores de los demás. Los detalles se resumen en los siguientes consejos.

Configuración de permisos de carpeta

En el servidor del lado de la publicación, abra las propiedades de la carpeta siguiente: La ruta de la carpeta depende de la versión de SQL Server y del nombre de la instancia.

  • C:\Archivos de programa\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

Desde la pestaña Seguridad, agregue la cuenta "SERVICE" y configúrela como control total.

Configuración de la distribución

Esta vez, la distribución se crea en el mismo servidor que la publicación.

Inicie SQL Server Management Studio, haga clic con el botón secundario en Replicación y seleccione Configurar distribución.

Haga clic en Siguiente.

Marque la < "Haga su propio servidor > su propio distribuidor".

Después de eso, haga clic en "Siguiente" tal como está para completarlo.

Creación de una publicación

Originalmente, se crea a partir del asistente como se muestra en la siguiente figura, En SQL Server 2019, la creación a partir de un asistente no habilita las "suscripciones renovables" y no permite la sincronización de registros entre tablas.

Por lo tanto, utilizamos T-SQL para crear la publicación aquí.

A continuación se muestra SQL para crear una publicación con autenticación de SQL Server: Cambie la contraseña de acuerdo con su configuración.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

Cuando utilice la autenticación de Windows, cambie las partes "sp_addlogreader_agent" y "sp_addpublication_snapshot" de la siguiente manera.

Autenticación de SQL Server

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

Autenticación de Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

Si se crea correctamente, verá lo siguiente:

Además, abra las propiedades de la publicación creada y asegúrese de que "Suscripción renovable" esté habilitada.

Especificación de artículos

Originalmente, si lo crea con un asistente, especificará el artículo al mismo tiempo, Dado que el script anterior no incluye el procesamiento de artículos, se especifica desde la propiedad.

Seleccione "Artículos" en el menú de la izquierda, marque la tabla que desea sincronizar y haga clic en el botón Aceptar.

Se agrega un msrepl_tran_version a las columnas de la tabla que se va a sincronizar y, al mismo tiempo, se agrega un desencadenador de tabla.

Crear una suscripción

Haga clic con el botón derecho en la publicación que acaba de crear y seleccione Nueva suscripción.

Haga clic en Siguiente.

Seleccione la publicación que ha creado.

Marque Ejecutar todos los agentes en Distributor <nombre del servidor>.

Haga clic en el botón Agregar suscriptor de SQL Server.

Especifica el servidor (+ nombre de instancia) que se va a registrar como suscriptor.

Si no tiene una base de datos de suscriptores, cree una nueva. Si ya existe, selecciónelo porque se muestra el elemento de selección.

Después de especificar la base de datos, haga clic en Siguiente.

Si tiene más de un suscriptor, puede registrar tantos como necesite aquí.

Haga clic en el botón "...".

Aquí, el agente se ejecuta en la cuenta sa, pero configúrelo de acuerdo con su entorno.

Seleccione Ejecutar continuamente.

La configuración de "Suscripción renovable" debe estar operativa.

En el caso de "confirmar cambios al mismo tiempo", se sincroniza inmediatamente, pero todos los servidores deben estar en ejecución.

"Cambios en la cola y confirmación si es posible" acumula los cambios en la cola, por lo que se confirman cuando el servidor se está ejecutando, incluso si el servidor no se está ejecutando. Sin embargo, el tiempo de sincronización es lento.

Marque Usar un servidor remoto o vinculado predefinido.

Seleccione Ahora.

Haga clic en Siguiente.

Haga clic en el botón Finalizar.

Cierre si no hay errores.

Después de unos momentos, puede ver que la base de datos se ha creado en el lado del suscriptor y que también se han creado las tablas.

Puede comprobar que los registros también están sincronizados.

Si no se sincroniza después de un tiempo, haga lo siguiente.

Haga clic con el botón secundario en la suscripción creada y seleccione Reinicializar.

Marque "Usar nueva instantánea" y haga clic en el botón "Establecer para reinicializar".

Si se produce un error, inténtelo de nuevo.

Comprobación del funcionamiento

Intente agregar o modificar tablas en el lado de la publicación.

Espere unos segundos más o menos para asegurarse de que esté sincronizado con el suscriptor.

Ahora modifiquemos el registro en el lado del suscriptor.

Puede comprobar que está sincronizado con el lado de la publicación.

Si tiene varios suscriptores registrados, asegúrese de que estén sincronizados entre suscriptores.