Supervisar la replicación mediante programación

Se aplica a:SQL ServerAzure SQL Managed Instance

El Monitor de replicación es una herramienta gráfica que permite supervisar una topología de replicación. Puede tener acceso a los mismos datos de supervisión mediante programación usando los procedimientos de almacenamiento de replicación de Transact-SQL o Replication Management Objects (RMO). Estos objetos permiten programar las tareas siguientes:

  • Supervisar el estado de publicadores, publicaciones y suscripciones.

  • Supervisar sesiones del Agente de mezcla en uno o más suscriptores.

  • Supervisar comandos transaccionales que esperan su aplicación en uno o más suscriptores.

  • Definir métricas de umbral que determinan cuándo requiere intervención una publicación.

  • Supervisar el estado de los testigos de seguimiento.

En este tema:

Transact-SQL

Replication Management Objects (RMO)

Transact-SQL

Para supervisar publicadores, publicaciones y suscripciones desde el distribuidor

  1. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelppublisher. De esta forma se devuelve la información de supervisión de todos los publicadores que usan este distribuidor. Para limitar el conjunto de resultados a un único publicador, especifique un valor en @publisher.

  2. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelppublication. De esta forma se devuelve la información de supervisión de todas las publicaciones que usan este distribuidor. Para limitar el conjunto de resultados a un único publicador, publicación o base de datos de publicación, especifique un valor en @publisher, @publicationo @publisher_db, respectivamente.

  3. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelpsubscription. De esta forma se devuelve la información de supervisión de todas las suscripciones que usan este distribuidor. Para limitar el conjunto de resultados a las suscripciones que pertenecen a un único publicador, publicación o base de datos de publicación, especifique un valor en @publisher, @publicationo @publisher_db, respectivamente.

Para supervisar los comandos transaccionales que esperan su aplicación en el suscriptor

  1. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorsubscriptionpendingcmds. De esta forma se devuelve la información de supervisión de todos los comandos pendientes en todas las suscripciones que usan este distribuidor. Para limitar el conjunto de resultados a los comandos pendientes de las suscripciones que pertenecen a un único publicador, suscriptor, publicación o base de datos de publicación, especifique un valor en @publisher, @subscriber, @publicationo @publisher_db, respectivamente.

Para supervisar los cambios de mezcla que esperan ser cargados o descargados

  1. En el publicador de la base de datos de publicación, ejecute sp_showpendingchanges. De esta forma se devuelve un conjunto de resultados que muestra información sobre los cambios que esperan su replicación en los suscriptores. Para limitar el conjunto de resultados a los cambios que pertenecen a una publicación o artículo únicos, especifique un valor en @publication o @article, respectivamente.

  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_showpendingchanges. De esta forma se devuelve un conjunto de resultados que muestra información sobre los cambios que esperan su replicación en el publicador. Para limitar el conjunto de resultados a los cambios que pertenecen a una publicación o artículo únicos, especifique un valor en @publication o @article, respectivamente.

Para supervisar las sesiones del Agente de mezcla

  1. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelpmergesession. De esta forma se devuelve información de supervisión, incluido el valor de Session_id, de todas las sesiones del Agente de mezcla de todas las suscripciones que usan este distribuidor. También puede obtener el valor de Session_id si consulta la tabla del sistema MSmerge_sessions .

  2. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelpmergesessiondetail. Especifique el valor Session_id del paso 1 en @session_id. De esta forma se muestra información detallada de supervisión acerca de la sesión.

  3. Repita el paso 2 para cada sesión que le interese.

Para supervisar las sesiones del Agente de mezcla de las suscripciones de extracción del suscriptor

  1. En el suscriptor de la base de datos de suscripciones, ejecute sp_replmonitorhelpmergesession. Para una suscripción determinada, especifique un valor en @publisher, un valor en @publicationy el nombre de la base de datos de publicación en @publisher_db. De esta forma se devuelve información de supervisión de las últimas cinco sesiones del Agente de mezcla de esta suscripción. Anote el valor de Session_id de las sesiones de interés incluidas en el conjunto de resultados.

  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_replmonitorhelpmergesessiondetail. Especifique el valor Session_id del paso 1 en @session_id. De esta forma se muestra información detallada de supervisión acerca de la sesión.

  3. Repita el paso 2 para cada sesión que le interese.

Para ver y modificar las métricas del umbral de supervisión de una publicación

  1. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorhelppublicationthresholds. De esta forma se devuelve el conjunto de umbrales de supervisión de todas las publicaciones que usan este distribuidor. Para limitar el conjunto de resultados a los umbrales de supervisión de las publicaciones que pertenecen a un único publicador, base de datos de publicación o publicación, especifique un valor en @publisher, @publisher_dbo @publication, respectivamente. Anote el valor de Metric_id de cualquier umbral que se deba cambiar. Para más información, consulte Set Thresholds and Warnings in Replication Monitor.

  2. En el distribuidor de la base de datos de distribución, ejecute sp_replmonitorchangepublicationthreshold. Especifique los valores siguientes, según sea necesario:

    • El valor de Metric_id obtenido en el paso 1 en @metric_id.

    • Un nuevo valor para la métrica del umbral de supervisión en @value.

    • Un valor de 1 en @shouldalert para que se registre una alerta cuando se alcance este umbral o un valor de 0 si no se necesita una alerta.

    • Un valor de 1 en @mode para habilitar la métrica del umbral de supervisión o un valor de 2 para deshabilitarla.

Replication Management Objects (RMO)

Para supervisar una suscripción a una publicación de combinación en el suscriptor

  1. Cree una conexión al suscriptor mediante la clase ServerConnection.

  2. Cree una instancia de la clase MergeSubscriberMonitor , y establezca las propiedades Publisher, Publication, PublisherDB, SubscriberDB de la suscripción y la propiedad ConnectionContext en la conexión ServerConnection creada en el paso 1.

  3. Llame a alguno de los métodos siguientes para devolver información sobre sesiones de Agente de mezcla de esta suscripción:

    • GetSessionsSummary : devuelve una matriz de objetos MergeSessionSummary con información de hasta las últimas cinco sesiones del Agente de mezcla. Anote el valor SessionId de cualquier sesión que le interese.

    • GetSessionsSummary : devuelve una matriz de objetos MergeSessionSummary con información sobre las sesiones de Agente de mezcla que se han producido durante el pasado número de horas pasadas como el parámetro hours (hasta las últimas cinco sesiones). Anote el valor SessionId de cualquier sesión que le interese.

    • GetLastSessionSummary : devuelve un objeto MergeSessionSummary con información sobre la última sesión del Agente de mezcla. Anote el valor SessionId de esta sesión.

    • GetSessionsSummaryDataSet : devuelve un objeto DataSet con información sobre hasta las últimas cinco sesiones del Agente de mezcla, una en cada fila. Anote el valor de la columna Session_id de las sesiones que le interesen.

    • GetLastSessionSummaryDataRow : devuelve un objeto DataRow con información sobre la última sesión del Agente de mezcla. Anote el valor de la columna Session_id de esta sesión.

  4. (Opcional) Llame a RefreshSessionSummary para actualizar los datos del objeto MergeSessionSummary pasados como mss, o llame a RefreshSessionSummary para actualizar los datos del objeto DataRow pasados como drRefresh.

  5. Con el Id. de sesión obtenido en el paso 3, llame a uno de los métodos siguientes para devolver información sobre los detalles de una sesión determinada:

Para supervisar las propiedades de replicación de todas las publicaciones en un distribuidor

  1. Cree una conexión al distribuidor mediante la clase ServerConnection .

  2. Cree una instancia de la clase ReplicationMonitor.

  3. Establezca la propiedad ConnectionContext de la ServerConnection creada en el paso 1.

  4. Llame al método LoadProperties para obtener las propiedades del objeto.

  5. Ejecute uno o más de los métodos siguientes para devolver información de replicación para todos los publicadores que utilizan este distribuidor.

Para supervisar las propiedades de publicación de un publicador concreto en el distribuidor

  1. Cree una conexión al distribuidor mediante la clase ServerConnection .

  2. Obtenga un objeto PublisherMonitor de alguna de estas maneras.

  3. Ejecute uno o más de los métodos siguientes para devolver información de replicación de todos los publicadores que pertenecen este publicador.

Para supervisar las propiedades de una publicación concreta en el distribuidor

  1. Cree una conexión al distribuidor mediante la clase ServerConnection .

  2. Obtenga un objeto PublicationMonitor de alguna de estas maneras.

  3. Ejecute uno o más de los métodos siguientes para devolver información sobre esta publicación.

Para supervisar comandos transaccionales a la espera de ser aplicados en el suscriptor.

  1. Cree una conexión al distribuidor mediante la clase ServerConnection .

  2. Obtenga un objeto PublicationMonitor de alguna de estas maneras.

  3. Ejecute el método TransPendingCommandInfo , que devuelve un objeto PendingCommandInfo .

  4. Utilice las propiedades de este objeto PendingCommandInfo para determinar el número estimado de comandos pendientes y el tiempo que tardará en completarse la entrega de estos comandos.

Para establecer los umbrales de advertencias del monitor de una

  1. Cree una conexión al distribuidor mediante la clase ServerConnection .

  2. Obtenga un objeto PublicationMonitor de alguna de estas maneras.

  3. Ejecute el método EnumMonitorThresholds . Anote los valores de umbral actuales del ArrayList devuelto de los objetos MonitorThreshold .

  4. Ejecute el método ChangeMonitorThreshold . Pase los siguientes parámetros:

    • metricID : un valor Int32 que representa la métrica de umbral de supervisión en la tabla siguiente:

      Value Description
      1 expiration : supervisa la expiración inminente de suscripciones a publicaciones transaccionales.
      2 latency : supervisa el rendimiento de suscripciones a publicaciones transaccionales.
      4 mergeexpiration : supervisa la expiración inminente de suscripciones a publicaciones de combinación.
      5 mergeslowrunduration : supervisa la duración de sincronizaciones de mezcla en conexiones de poco ancho de banda (acceso telefónico).
      6 mergefastrunduration : supervisa la duración de sincronizaciones de mezcla en conexiones de gran ancho de banda (LAN).
      7 mergefastrunspeed : supervisa la velocidad de sincronización de sincronizaciones de mezcla en conexiones de red de área local (LAN) de gran ancho de banda.
      8 mergeslowrunspeed : supervisa la velocidad de sincronización de sincronizaciones de mezcla en conexiones de poco ancho de banda (acceso telefónico).
    • enable - Boolean que indica si la métrica está habilitada para la publicación.

    • thresholdValue : el valor entero que establece el umbral.

    • shouldAlert : el entero que indica si este umbral debería generar una alerta.