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.

  • Supervise el estado de los tokens de rastreo.

Transact-SQL

Para supervisar editores, publicaciones y suscripciones desde el distribuidor

  1. En el distribuidor, en 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, en 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, en 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. Esto devuelve información de supervisión de todos los comandos pendientes para todas las suscripciones que utilizan 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 fusión pendientes de subir o descargar

  1. En el servidor Publicador, en 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, en 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, en 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 @publisher, @publication y el nombre de la base de datos de la publicación para @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, en la base de datos de distribución, ejecute sp_replmonitorhelppublicationthresholds. Esto devuelve los umbrales de supervisión establecidos para todas las publicaciones que utilizan este distribuidor. Para limitar el conjunto de resultados a los umbrales de supervisión para publicaciones que pertenecen a un único editor, a una única base de datos publicada o a una única publicación, especifique @publisher, @publisher_db o @publication, respectivamente. Anote el valor de Metric_id de cualquier umbral que se deba cambiar. Para más información, consulte Establecer umbrales y advertencias en el Monitor de replicación.

  2. En el Distribuidor, en 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.

Objetos de Gestión de Replicación (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 y SubscriberDB para la suscripción, y establezca la propiedad ConnectionContext en el valor de ServerConnection creado 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 del Agente de mezcla que se han producido durante el número de horas anterior especificado en el parámetro hours (hasta un máximo de las cinco últimas 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. Tome nota del 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 Editor 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 varios de los siguientes métodos para devolver la información de replicación de todas las publicaciones que pertenecen a este Publicador.

Para monitorizar las propiedades de una publicación específica 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 monitorizar los comandos transaccionales que están pendientes de aplicarse 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 advertencia del monitor de una publicación

  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:

      Valor Descripción
      1 expiration : supervisa la expiración inminente de suscripciones a publicaciones transaccionales.
      2 latency - supervisa el rendimiento de las suscripciones a publicaciones transaccionales.
      4 mergeexpiration - supervisa la caducidad inminente de las suscripciones a publicaciones de fusión.
      5 mergeslowrunduration: supervisa la duración de las sincronizaciones de fusión en conexiones de bajo ancho de banda (acceso telefónico).
      6 mergefastrunduration - supervisa la duración de las sincronizaciones de combinación en conexiones de ancho de banda elevado (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 las sincronizaciones de combinación en conexiones de bajo ancho de banda (acceso telefónico).
    • enable - Boolean valor 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.