Articles

SQLShack

El volumen de datos retenidos, administrados y a los que se accede hoy en día no tiene precedentes. Las empresas esperan que el departamento de TI mantenga los datos en línea y accesibles de forma indefinida, lo que ejerce una presión intensa sobre las bases de datos necesarias para almacenarlos y administrarlos. Para satisfacer las necesidades actuales, necesitamos reemplazar los procesos heredados obsoletos e ineficientes por técnicas nuevas y más ágiles. La replicación de SQL Server es una de las técnicas para adaptarse a tales demandas.

  • Nota: Para obtener más información sobre la replicación de bases de datos, lea el artículo Different Stakeholders, Different Views: Por qué la administración de bases de datos requiere un enfoque sistemático.

En este artículo, vamos a darle forma a su comprensión de la topografía completa de la replicación de SQL Server, incluidos los componentes, el funcionamiento interno y el SQL, para vincularlo todo. Después de completar la lectura de este artículo, entenderás:

  • Replicación de SQL Server, en general
  • Componentes de la replicación transaccional de SQL Server, en particular
  • Cómo obtener las propiedades del distribuidor
  • Cómo encontrar el editor utilizando el mismo distribuidor
  • Cuáles son las bases de datos utilizadas para la replicación de SQL Server
  • La topología general de un entorno de replicación
  • detalles
  • Cómo obtener detalles de suscripción
  • Agentes de replicación de SQL Server
  • Y más

Replicación

La replicación de SQL Server es una tecnología para copiar y distribuir datos y objetos de base de datos de una base de datos a otra y luego sincronizar entre bases de datos para mantener la consistencia e integridad de los datos. En la mayoría de los casos, la replicación es un proceso de reproducción de los datos en los objetivos deseados. La replicación de SQL Server se utiliza para copiar y sincronizar datos de forma continua o también se puede programar para que se ejecuten a intervalos predeterminados. Hay varias técnicas de replicación diferentes que admiten una variedad de enfoques de sincronización de datos; unidireccional; uno a muchos; muchos a uno; y bidireccional, y mantienen varios conjuntos de datos sincronizados entre sí.

Componentes de replicación transaccional de SQL Server

El siguiente diagrama muestra los componentes de la replicación transaccional de SQL Server.

Incluyendo la replicación de SQL Server

  • Editor
  • Base de datos de publicaciones
  • Publicación
  • Artículos
  • Distribuidor
  • Base de datos de distribución
  • Suscriptor
  • Base de datos de suscripción
  • Suscripción
  • Agentes de replicación

Diagrama de replicación de SQL Server

Artículo

Un artículo es la unidad básica de la replicación de SQL Server. Un artículo puede consistir en tablas, procedimientos almacenados y vistas. Es posible escalar el artículo, horizontal y verticalmente utilizando una opción de filtro. También podemos crear varios artículos en el mismo objeto con algunas restricciones y limitaciones.

Mediante el asistente para Nueva publicación, se puede navegar por el artículo. Nos permite ver las propiedades de un artículo y proporcionar opciones para establecer propiedades para los artículos. En algunos casos, las propiedades se pueden establecer durante el momento de la creación de la publicación y es una propiedad de solo lectura.

Después de la creación de una publicación de replicación de SQL Server, por ejemplo, si alguna propiedad requiere un cambio, a su vez, requerirá que se genere una nueva instantánea de replicación. Si la publicación tiene una o más suscripciones, el cambio requiere que se reinicien todas las suscripciones. Para obtener más información, consulte Cómo agregar / soltar artículos a / desde una publicación existente en el artículo de SQL Server.

Para ver una lista de todos los artículos que se publican, ejecute el siguiente T-SQL

1
2
3
4
5
6
7
8
9
10
11
12

SELECCIONAR
Pub.
, Art.
, Art.
, Art.
, Art.
DE la
.. Arte
UNIÓN INTERIOR .. Pub
EN Art. = Pub.
ORDER BY
Pub., Art.

To get the details of articles in transactional or merge SQL Server replication in a published database, run the following T-SQL.

1
2
3
4
5
6
7
8

SELECT st.name , st.schema_id, st.is_published , st.is_merge_published, is_schema_published
DE sys.tablas st DONDE st. is_published = 1 o st. is_merge_published = 1 o st.is_schema_published = 1
UNION
SELECCIONAR sp.name, sp.schema_id, 0, 0, sp.is_schema_published
FROM sys.procedimientos sp DONDE sp. is_schema_published = 1
UNION
SELECCIONAR sv.name, sv.schema_id, 0, 0, sv.is_schema_published
FROM sys.vistas sv DONDE sv.is_schema_published = 1;

To get detailed information about an article in the listed publisher, run the following T-SQL

1
2
3
4
5
6
7

DECLARE @publication AS sysname;
SET @publication = N’PROD_HIST_Pub’;
USE MES_PROD_AP
EXEC sp_helparticle
@publication = @publication;
GO

To get column level details, run the following T-SQL

1
2
3

USE MES_PROD_AP
GO
sp_helparticlecolumns @publication = N’PROD_HIST_Pub’ , @article = ‘tb_Branch_Plant’

Para ver una lista de las columnas que se publican en la replicación transaccional en la base de datos de publicación, ejecute el siguiente T-SQL

1
SELECCIONE object_name(object_id) , nombre DE sys.columnas sc DONDE sc.is_replicated = 1;

Publicaciones

Una Publicación es una colección lógica de los artículos de una base de datos. La entidad nos permite definir y configurar propiedades de artículo en el nivel superior para que las propiedades se hereden a todos los artículos de ese grupo.

1
EXEC sp_helppublication;

Base de datos del editor

El editor es una base de datos que contiene una lista de objetos designados como replicación de SQL Server. El editor puede tener una o más publicaciones. Cada editor define un mecanismo de propagación de datos mediante la creación de varios procedimientos almacenados de replicación interna.

1
2
3

USE Distribution
GO
select * from MSpublications

Publisher

The Publisher is a database instance that makes data available to other locations through SQL Server replication. El Editor puede tener una o más publicaciones, cada una de las cuales define un conjunto de objetos y datos relacionados lógicamente para replicar.

Distribuidor

El Distribuidor es una base de datos que actúa como almacén para la replicación de datos específicos asociados con uno o más Editores. En muchos casos, el distribuidor es una base de datos única que actúa como Editor y Distribuidor. En el contexto de la replicación de SQL Server, esto se conoce comúnmente como un»distribuidor local». Por otro lado, si está configurado en un servidor separado, entonces se conoce como un «distribuidor remoto». Cada editor está asociado con una única base de datos conocida como «base de datos de distribución», también conocida como «Distribuidor».

La base de datos de distribución identifica y almacena datos de estado de replicación de SQL Server, metadatos sobre la publicación y, en algunos casos, actúa como una cola para los datos que se mueven del Editor a los Suscriptores.

Dependiendo del modelo de replicación, el Distribuidor también puede ser responsable de notificar a los Suscriptores que se han suscrito a una publicación que un artículo ha cambiado. Además, la base de datos de distribución mantiene la integridad de los datos.

Bases de datos de distribución

Cada distribuidor debe tener al menos una base de datos de distribución. La base de datos de distribución consta de detalles de artículos, metadatos de replicación y datos. Un distribuidor puede tener más de una base de datos de distribución; sin embargo, todas las publicaciones definidas en un solo Editor deben utilizar la misma base de datos de distribución.

Para saber si …

  • un servidor es un distribuidor o no?

    1
    SELECT @@ServerName Servername, case when is_distributor=1 then ‘Yes’ else ‘No’ end status FROM sys.servers WHERE name=’repl_distributor’ AND data_source=@@servername;

  • a distribution database installed or not?

    1
    SELECT name FROM sys.databases WHERE is_distributor = 1
  • a Publisher is using this Distributor or not?

    1
    EXEC sp_get_distributor

  • or just to interrogate various Distributor and Distribution database properties?

    1
    2
    3

    EXEC sp_helpdistributor;
    EXEC sp_helpdistributiondb;
    EXEC sp_helpdistpublisher;

Subscriber

A database instance that consumes SQL Server replication data from a publication is called a Subscriber. El suscriptor puede recibir datos de uno o más editores y publicaciones. El suscriptor también puede devolver los cambios de datos al editor o volver a publicar los datos a otros suscriptores, según el tipo de diseño y modelo de replicación.

1
EXEC sp_helpsubscriberinfo;

Suscripciones

se trata de Una suscripción solicitud de una copia de una publicación que se entrega a un Suscriptor. La suscripción define qué datos de publicación se recibirán, dónde y cuándo.

Hay dos tipos de suscripciones: suscripciones push y suscripciones pull

  • Suscripción push: El distribuidor actualiza directamente los datos en la base de datos de suscriptores
  • Suscripción Pull: está programado que el Suscriptor verifique regularmente en el Distribuidor si hay nuevos cambios disponibles y, a continuación, actualice los datos en la propia base de datos de suscripciones.
1
EXEC sp_helpsubscription;

la Suscripción de bases de datos

Una base de datos de destino de la replicación de un modelo que se llama una base de datos de suscripción.

Agentes de replicación

La replicación de SQL Server utiliza un conjunto predefinido de programas independientes y los eventos se conocen como agentes, para llevar a cabo las tareas asociadas con los datos. De forma predeterminada, los agentes de replicación de SQL Server se ejecutan como trabajos programados en el agente de SQL Server. Los agentes de replicación también se pueden ejecutar desde la línea de comandos y por aplicaciones que usan Objetos de administración de replicación (RMO). Los agentes de replicación de SQL Server se pueden supervisar y administrar mediante Replication Monitor y SQL Server Management Studio.

Agente de instantáneas de replicación

El agente de instantáneas de replicación se utiliza con todos los tipos de tecnología de replicación de SQL Server, ya que proporciona el conjunto de datos necesario para realizar la sincronización inicial de datos de la base de datos de publicación con la base de datos de suscripción. Prepara esquemas y datos iniciales de artículos publicados, archivos de instantáneas y registra información sobre el tipo de sincronización en la base de datos de distribución.

Agente Lector de registros

El agente Lector de registros solo se utiliza con replicación transaccional. Traslada las transacciones de replicación del registro de transacciones en línea de la base de datos de publicaciones a la base de datos de distribución.

Agente de distribución

El agente de distribución se utiliza solo con instantáneas de replicación y replicación transaccional de SQL Server. Este agente aplica la instantánea de replicación inicial a la base de datos de suscripciones y, posteriormente, los cambios de datos se rastrean y registran en la base de datos de distribución y se aplican a la base de datos de suscripciones.

Agente de fusión

El agente de fusión se utiliza con el modelo de replicación de fusión. De forma predeterminada, el Agente Merge carga los cambios del Suscriptor al Editor y, a continuación, descarga los cambios del Editor al Suscriptor. Cada suscripción tiene su propio agente de fusión que se conecta al Editor y al Suscriptor y actualiza ambos. El Agente Merge se ejecuta en el Distribuidor para suscripciones push o en el Suscriptor para suscripciones pull. Aquí, la sincronización es bidireccional. Los conflictos de datos son manejados por un conjunto de disparadores que admiten todo el proceso

Resumen

Hasta ahora, hemos visto un recorrido por algunos de los conceptos importantes de la replicación de SQL Server. Además, los scripts de T-SQL se muestran para consultar tablas del sistema y procedimientos almacenados de replicación para responder a la mayoría de las preguntas más frecuentes sobre la replicación de SQL Server.

Hablaré más sobre la replicación de SQL Server en los próximos artículos. Si cree que se puede mejorar algo en este artículo, no dude en dejar su comentario a continuación

Tabla de contenidos

Replicación de SQL Server: Descripción general de componentes y topografía

Replicación de SQL: Configuración básica

Cómo agregar/Soltar artículos de publicaciones existentes en SQL Server

Cómo hacer una comparación rápida estimada de datos en dos grandes bases de datos de SQL Server para ver si son iguales

Replicación transaccional de SQL Server: Cómo reiniciar una suscripción utilizando una copia de seguridad de base de datos de SQL Server

Cómo configurar un modelo personalizado de replicación de transacciones de SQL Server con un suscriptor Central y varias bases de datos de editores

Cómo configurar la replicación transaccional de SQL Server personalizada con un editor central y varias bases de datos de suscriptores

Cómo configurar una solución de replicación transaccional de base de datos de SQL Server DDL y DML

/p>

Migraciones de bases de datos de SQL Server con cero pérdida de datos uso de replicación de datos transaccionales para reproducir y probar cargas de producción en un servidor de ensayo

Cómo configurar la replicación de bases de datos de SQL Server para un servidor de informes

replicación transaccional de SQL Server: Cómo reiniciar una suscripción usando «Solo soporte de replicación» –TBA

Monitoreo y configuración de alertas de replicación de SQL Server usando PowerShell –TBA

  • Autor
  • Publicaciones recientes
Prashanth Jayaram
Soy un tecnólogo de bases de datos con más de 11 años de experiencia práctica en tecnologías de bases de datos. Soy Profesional Certificado por Microsoft y con el respaldo de un Título en Maestría en Aplicaciones Informáticas.
Mi especialidad es diseñar & implementar soluciones de alta disponibilidad y migración de bases de datos multiplataforma. Las tecnologías en las que se trabaja actualmente son SQL Server, PowerShell, Oracle y MongoDB.Ver todas las publicaciones de Prashanth Jayaram
Prashanth Jayaram
Últimas publicaciones de Prashanth Jayaram (ver todas)
  • Una visión general rápida de la auditoría de base de datos en SQL – 28 de enero de 2021
  • Cómo configurar la sincronización de datos de Azure entre las bases de datos SQL de Azure y el servidor SQL local-20 de enero de 2021
  • Cómo realizar operaciones de importación/exportación de bases de datos SQL de Azure con PowerShell – 14 de enero de 2021