Supervisar la replicación mediante programación
Se aplica a: SQL Server Azure 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:
Replication Management Objects (RMO)
Transact-SQL
Para supervisar publicadores, publicaciones y suscripciones desde el distribuidor
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.
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.
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
- 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
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.
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
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 .
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.
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
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.
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.
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
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.
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
Cree una conexión al suscriptor mediante la clase ServerConnection.
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.
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.
(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.
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:
GetSessionDetails : devuelve una matriz de objetos MergeSessionDetail para el SessionId.
GetSessionDetailsDataSet : devuelve un objeto DataSet con información del SessionId.
Para supervisar las propiedades de replicación de todas las publicaciones en un distribuidor
Cree una conexión al distribuidor mediante la clase ServerConnection .
Cree una instancia de la clase ReplicationMonitor.
Establezca la propiedad ConnectionContext de la ServerConnection creada en el paso 1.
Llame al método LoadProperties para obtener las propiedades del objeto.
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.
EnumDistributionAgents : devuelve un objeto DataSet que contiene información sobre todos los agentes de distribución en este distribuidor.
EnumErrorRecords : devuelve un objeto DataSet que contiene información sobre los errores almacenados en el distribuidor.
EnumLogReaderAgents : devuelve un objeto DataSet que contiene información sobre todos los agentes de registro del LOG en este distribuidor.
EnumMergeAgents : devuelve un objeto DataSet que contiene información sobre todos los agentes de mezcla en el distribuidor.
EnumMiscellaneousAgents : devuelve un objeto DataSet que contiene información sobre todo los agentes de replicación en el distribuidor.
EnumPublishers : devuelve un objeto DataSet que contiene información sobre todos los publicadores en el distribuidor.
EnumPublishers2 : devuelve un objeto DataSet que devuelve los publicadores que utilizan este distribuidor.
EnumQueueReaderAgents : devuelve un objeto DataSet que contiene información sobre todos los agentes de registro del LOG en el distribuidor.
EnumQueueReaderAgentSessionDetails : devuelve un objeto DataSet que contiene los detalles sobre el Agente de lectura de cola especificado y la sesión.
EnumQueueReaderAgentSessions : devuelve un objeto DataSet que contiene información de sesión sobre el Agente de lectura de cola especificado y la sesión.
EnumSnapshotAgents : devuelve un objeto DataSet que contiene información sobre todos los agentes de instantáneas en el distribuidor.
Para supervisar las propiedades de publicación de un publicador concreto en el distribuidor
Cree una conexión al distribuidor mediante la clase ServerConnection .
Obtenga un objeto PublisherMonitor de alguna de estas maneras.
Cree una instancia de la clase PublisherMonitor. Establezca las propiedades Name del publicador, y establezca la propiedad ConnectionContext en la ServerConnection creada en el paso 1. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que el nombre del publicador se definió incorrectamente o que la publicación no existe.
De PublisherMonitorCollection al que obtuvo acceso por medio de la propiedad PublisherMonitors de un objeto ReplicationMonitor existente.
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.
EnumDistributionAgentSessionDetails : devuelve un objeto DataSet que contiene los detalles sobre el Agente de distribución especificado y la sesión.
EnumDistributionAgentSessions : devuelve un objeto DataSet que contiene información de sesión sobre el Agente de distribución especificado.
EnumErrorRecords : devuelve un objeto DataSet que contiene información de registro de error sobre un error especificado.
EnumLogReaderAgentSessionDetails : devuelve un objeto DataSet que contiene los detalles sobre el Agente de registro del LOG especificado y la sesión.
EnumLogReaderAgentSessions : devuelve un objeto DataSet que contiene información de sesión de un Agente de registro del LOG especificado.
EnumMergeAgentSessionDetails : devuelve un objeto DataSet que contiene los detalles sobre el Agente de mezcla especificado y la sesión.
EnumMergeAgentSessionDetails2 : devuelve un objeto DataSet que contiene los detalles adicionales sobre el Agente de mezcla especificado y la sesión.
EnumMergeAgentSessions : devuelve un objeto DataSet que contiene información del Agente de mezcla especificado.
EnumMergeAgentSessions2 : devuelve un objeto DataSet que contiene información de sesión adicional sobre el Agente de mezcla especificado.
EnumPublications : devuelve un objeto DataSet que contiene información sobre todas las publicaciones en el distribuidor.
EnumPublications2 : devuelve un objeto DataSet que contiene información adicional sobre todas las publicaciones en el distribuidor.
EnumSnapshotAgentSessionDetails : devuelve un objeto DataSet que contiene los detalles sobre el Agente de instantánea especificado y la sesión.
EnumSnapshotAgentSessions : devuelve un objeto DataSet que contiene información de sesión de un Agente de instantánea especificado.
EnumSubscriptions : devuelve un objeto DataSet que contiene información sobre todas las suscripciones a publicaciones en el distribuidor.
Para supervisar las propiedades de una publicación concreta en el distribuidor
Cree una conexión al distribuidor mediante la clase ServerConnection .
Obtenga un objeto PublicationMonitor de alguna de estas maneras.
Cree una instancia de la clase PublicationMonitor. Establezca las propiedades DistributionDBName, PublisherName, PublicationDBNamey Name de la publicación, y establezca la propiedad ConnectionContext de la ServerConnection creada en el paso 1. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de la publicación de definieron incorrectamente o que la publicación no existe.
De PublicationMonitorCollection al que obtuvo acceso por medio de la propiedad PublicationMonitors de un objeto PublisherMonitor existente.
Ejecute uno o más de los métodos siguientes para devolver información sobre esta publicación.
EnumErrorRecords : devuelve un objeto DataSet que contiene registros de error sobre un error especificado.
EnumLogReaderAgent : devuelve un objeto DataSet que contiene información sobre el Agente de registro del LOG de esta publicación.
EnumMonitorThresholds : devuelve un objeto DataSet que contiene información sobre el conjunto de umbrales de advertencia del monitor para esta publicación.
EnumQueueReaderAgent : devuelve un objeto DataSet que contiene información sobre el Agente de lectura de cola utilizado por esta publicación.
EnumSnapshotAgent : devuelve un objeto DataSet que contiene información sobre el Agente de instantáneas de esta publicación.
EnumSubscriptions : devuelve un objeto DataSet que contiene información sobre las suscripciones a esta publicación.
EnumSubscriptions2 : devuelve un objeto DataSet que contiene información adicional sobre suscripciones a esta publicación basándose en el SubscriptionResultOptionproporcionado.
EnumTracerTokenHistory : devuelve un objeto DataSet que contiene información de latencia del token de seguimiento especificado.
EnumTracerTokens : devuelve un objeto DataSet que contiene información sobre todos los testigos de seguimiento insertados en esta publicación.
Para supervisar comandos transaccionales a la espera de ser aplicados en el suscriptor.
Cree una conexión al distribuidor mediante la clase ServerConnection .
Obtenga un objeto PublicationMonitor de alguna de estas maneras.
Cree una instancia de la clase PublicationMonitor. Establezca las propiedades DistributionDBName, PublisherName, PublicationDBNamey Name de la publicación, y establezca la propiedad ConnectionContext de la ServerConnection creada en el paso 1. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de la publicación de definieron incorrectamente o que la publicación no existe.
De PublicationMonitorCollection al que obtuvo acceso por medio de la propiedad PublicationMonitors de un objeto PublisherMonitor existente.
Ejecute el método TransPendingCommandInfo , que devuelve un objeto PendingCommandInfo .
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
Cree una conexión al distribuidor mediante la clase ServerConnection .
Obtenga un objeto PublicationMonitor de alguna de estas maneras.
Cree una instancia de la clase PublicationMonitor. Establezca las propiedades DistributionDBName, PublisherName, PublicationDBNamey Name de la publicación, y establezca la propiedad ConnectionContext de la ServerConnection creada en el paso 1. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de la publicación de definieron incorrectamente o que la publicación no existe.
De PublicationMonitorCollection al que obtuvo acceso por medio de la propiedad PublicationMonitors de un objeto PublisherMonitor existente.
Ejecute el método EnumMonitorThresholds . Anote los valores de umbral actuales del ArrayList devuelto de los objetos MonitorThreshold .
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 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.