Procédure : analyser la réplication par programmation (programmation RMO)
Le moniteur de réplication est un outil graphique permettant d'analyser la topologie de réplication. Vous pouvez accéder par programmation aux mêmes données d'analyse en utilisant les objets RMO. Les classes RMO permettent de programmer les tâches suivantes :
Analyser les résultats des cinq dernières exécutions de l'Agent de fusion sur l'Abonné.
Analyser l'état des serveurs de publication, des publications et des abonnements.
Analyser les commandes transactionnelles en attente d'application sur un ou plusieurs Abonnés.
Définir la métrique de seuil qui détermine quand une publication nécessite une intervention.
Analyser l'état des jetons de suivi. Pour plus d'informations, consultez Procédure : mesurer la latence et valider les connexions pour la réplication transactionnelle (programmation RMO).
Pour surveiller un abonnement à une publication de fusion sur l'Abonné
Créez une connexion à l'Abonné en utilisant la classe ServerConnection.
Créez une instance de la classe MergeSubscriberMonitor et définissez les propriétés Publisher, Publication, PublisherDB, SubscriberDB de l'abonnement, puis attribuez à la propriété ConnectionContext la valeur ServerConnection créée dans l'étape 1.
Appelez l'une des méthodes suivantes pour retourner les informations sur les sessions de l'Agent de fusion de cet abonnement :
GetSessionsSummary()()()() - retourne un tableau d'objets MergeSessionSummary avec des informations sur les cinq dernières sessions au plus de l'Agent de fusion. Notez la valeur SessionID()()()() pour toutes les sessions dignes d'intérêt.
GetSessionsSummary(Int32)- retourne un tableau d'objets MergeSessionSummary avec les informations sur les sessions de l'Agent de fusion qui se sont produites pendant le nombre passé d'heures transmis comme paramètre hours (jusqu'aux cinq dernières sessions au plus). Notez la valeur SessionID()()()() pour toutes les sessions dignes d'intérêt.
GetLastSessionSummary- retourne un objet MergeSessionSummary avec les informations sur la dernière session de l'Agent de fusion. Notez la valeur SessionID()()()() de cette session.
GetSessionsSummaryDataSet - retourne un objet DataSet avec les informations sur les cinq dernières sessions au plus de l'Agent de fusion, une session par ligne. Notez la valeur de la colonne Session_id pour toutes les sessions dignes d'intérêt.
GetLastSessionSummaryDataRow- retourne un objet DataRow avec les informations sur la dernière session de l'Agent de fusion. Notez la valeur de la colonne Session_id pour cette session.
(Facultatif) Appelez RefreshSessionSummary(MergeSessionSummary%) pour actualiser les données de l'objet MergeSessionSummary transmis comme mss, ou appelez RefreshSessionSummary(DataRow%) pour actualiser les données de l'objet DataRow transmis comme drRefresh.
À l'aide de l'ID de session obtenu à l'étape 3, appelez l'une des méthodes suivantes pour retourner les informations sur les détails d'une session particulière :
GetSessionDetails - retourne un tableau d'objets MergeSessionDetail pour le sessionID fourni.
GetSessionDetailsDataSet - retourne un objet DataSet avec les informations pour le sessionID spécifié.
Pour surveiller les propriétés de réplication de toutes les publications sur un serveur de distribution
Créez une connexion au serveur de distribution en utilisant la classe ServerConnection.
Créez une instance de la classe ReplicationMonitor.
Définissez la propriété ConnectionContext avec le ServerConnection créé au cours de l'étape 1.
Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet.
Exécutez une ou plusieurs des méthodes suivantes pour retourner les informations de réplication de tous les serveurs de publication qui utilisent ce serveur de distribution.
EnumDistributionAgents- retourne un objet DataSet qui contient des informations sur tous les Agents de distribution de ce serveur de distribution.
EnumErrorRecords- retourne un objet DataSet qui contient des informations sur les erreurs stockées sur le serveur de distribution.
EnumLogReaderAgents- retourne un objet DataSet qui contient des informations sur tous les Agents de lecture du journal de ce serveur de distribution.
EnumMergeAgents- retourne un objet DataSet qui contient des informations sur tous les Agents de fusion de ce serveur de distribution.
EnumMiscellaneousAgents- retourne un objet DataSet qui contient des informations sur tous les autres agents de réplication de ce serveur de distribution.
EnumPublishers- retourne un objet DataSet qui contient des informations sur tous les serveurs de publication de ce serveur de distribution.
EnumPublishers2- retourne un objet DataSet qui contient les serveurs de publication qui utilisent ce serveur de distribution.
EnumQueueReaderAgents- retourne un objet DataSet qui contient des informations sur tous les Agents de lecture de la file d'attente de ce serveur de distribution.
EnumQueueReaderAgentSessionDetails- retourne un objet DataSet qui contient des détails sur l'Agent de lecture de la file d'attente et la session spécifiés.
EnumQueueReaderAgentSessions- retourne un objet DataSet qui contient des informations de session sur l'Agent de lecture de la file d'attente spécifié.
EnumSnapshotAgents- retourne un objet DataSet qui contient des informations sur tous les Agents de capture instantanée de ce serveur de distribution.
Pour analyser les propriétés de publication d'un serveur de publication spécifique d'un serveur de distribution
Créez une connexion au serveur de distribution en utilisant la classe ServerConnection.
Récupérez un objet PublisherMonitor par l'un ou l'autre de ces moyens.
Créez une instance de la classe PublisherMonitor. Définissez la propriété Name pour le serveur de publication et définissez la propriété ConnectionContext avec le ServerConnection créé au cours de l'étape 1. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, le nom du serveur de publication n'a pas été correctement défini ou la publication n'existe pas.
Depuis le PublisherMonitorCollection accessible au moyen de la propriété PublisherMonitors d'un objet ReplicationMonitor existant.
Exécutez une ou plusieurs des méthodes suivantes pour retourner les informations de réplication de toutes les publications qui appartiennent à ce serveur de publication.
EnumDistributionAgentSessionDetails- retourne un objet DataSet qui contient des détails sur l'Agent de distribution et la session spécifiés.
EnumDistributionAgentSessions- retourne un objet DataSet qui contient des informations de session sur l'Agent de distribution spécifié.
EnumErrorRecords- retourne un objet DataSet qui contient des informations d'enregistrement d'erreur sur l'erreur spécifiée.
EnumLogReaderAgentSessionDetails- retourne un objet DataSet qui contient des détails sur l'Agent de lecture du journal et la session spécifiés.
EnumLogReaderAgentSessions- retourne un objet DataSet qui contient des informations de session sur l'Agent de lecture du journal spécifié.
EnumMergeAgentSessionDetails- retourne un objet DataSet qui contient des détails sur l'Agent de fusion et la session spécifiés.
EnumMergeAgentSessionDetails2- retourne un objet DataSet qui contient des détails supplémentaires sur l'Agent de fusion et la session spécifiés.
EnumMergeAgentSessions- retourne un objet DataSet qui contient des informations de session sur l'Agent de fusion spécifié.
EnumMergeAgentSessions2- retourne un objet DataSet qui contient des informations de session supplémentaires sur l'Agent de fusion spécifié.
EnumPublications- retourne un objet DataSet qui contient des informations sur toutes les publications de ce serveur de distribution.
EnumPublications2- retourne un objet DataSet qui contient des informations supplémentaires sur toutes les publications de ce serveur de distribution.
EnumSnapshotAgentSessionDetails- retourne un objet DataSet qui contient des détails sur la session et l'Agent de capture instantané spécifiés.
EnumSnapshotAgentSessions- retourne un objet DataSet qui contient des informations de session sur l'Agent de capture instantané spécifié.
EnumSubscriptions- retourne un objet DataSet qui contient des informations supplémentaires sur tous les abonnements aux publications de ce serveur de distribution.
Pour analyser les propriétés d'une publication spécifique du serveur de distribution
Créez une connexion au serveur de distribution en utilisant la classe ServerConnection.
Récupérez un objet PublicationMonitor par l'un ou l'autre de ces moyens.
Créez une instance de la classe PublicationMonitor. Définissez les propriétés DistributionDBName, PublisherName, PublicationDBName et Name de la publication et définissez la propriété ConnectionContext avec le ServerConnection créé au cours de l'étape 1. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, les propriétés de publication n'ont pas été correctement définies ou la publication n'existe pas.
Depuis le PublicationMonitorCollection accessible au moyen de la propriété PublicationMonitors d'un objet PublisherMonitor existant.
Exécutez une ou plusieurs des méthodes suivantes pour retourner des informations sur cette publication.
EnumErrorRecords- retourne un objet DataSet qui contient des enregistrements d'erreur sur l'erreur spécifiée.
EnumLogReaderAgent- retourne un objet DataSet qui contient des informations sur l'Agent de lecture du journal de cette publication.
EnumMonitorThresholds- retourne un objet DataSet qui contient les informations sur les seuils d'avertissement du moniteur pour cette publication.
EnumQueueReaderAgent- retourne un objet DataSet qui contient des informations sur l'Agent de lecture de la file d'attente utilisé par cette publication.
EnumSnapshotAgent- retourne un objet DataSet qui contient des informations sur l'Agent de capture instantanée de cette publication.
EnumSubscriptions- retourne un objet DataSet qui contient des informations sur les abonnements à cette publication.
EnumSubscriptions2 - retourne un objet DataSet qui contient des informations supplémentaires sur les abonnements à cette publication en fonction du SubscriptionResultOption fourni.
EnumTracerTokenHistory- retourne un objet DataSet qui contient des informations de latence sur le jeton de suivi spécifié.
EnumTracerTokens- retourne un objet DataSet qui contient des informations sur tous les jetons de suivi insérés dans cette publication.
Pour analyser les commandes transactionnelles en attente d'application sur l'Abonné
Créez une connexion au serveur de distribution en utilisant la classe ServerConnection.
Récupérez un objet PublicationMonitor par l'un ou l'autre de ces moyens.
Créez une instance de la classe PublicationMonitor. Définissez les propriétés DistributionDBName, PublisherName, PublicationDBName et Name de la publication et définissez la propriété ConnectionContext avec le ServerConnection créé au cours de l'étape 1. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, les propriétés de publication n'ont pas été correctement définies ou la publication n'existe pas.
Depuis le PublicationMonitorCollection accessible au moyen de la propriété PublicationMonitors d'un objet PublisherMonitor existant.
Exécutez la méthode TransPendingCommandInfo, qui retourne un objet PendingCommandInfo.
Utilisez les propriétés de cet objet PendingCommandInfo pour déterminer le nombre estimé de commandes en attente et la durée nécessaire à la remise complète de ces commandes.
Pour définir les seuils d'avertissement du moniteur pour une publication
Créez une connexion au serveur de distribution en utilisant la classe ServerConnection.
Récupérez un objet PublicationMonitor par l'un ou l'autre de ces moyens.
Créez une instance de la classe PublicationMonitor. Définissez les propriétés DistributionDBName, PublisherName, PublicationDBName et Name de la publication et définissez la propriété ConnectionContext avec le ServerConnection créé au cours de l'étape 1. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, les propriétés de publication n'ont pas été correctement définies ou la publication n'existe pas.
Depuis le PublicationMonitorCollection accessible au moyen de la propriété PublicationMonitors d'un objet PublisherMonitor existant.
Exécutez la méthode EnumMonitorThresholds. Notez les paramètres de seuil en cours dans le ArrayList retourné des objets MonitorThreshold.
Exécutez la méthode ChangeMonitorThreshold. Transmettez les paramètres suivants :
metricID- une valeur Int32 qui représente le seuil d'analyse métrique de la table suivante :
Valeur
Description
1
expiration : contrôle l'expiration imminente des abonnements aux publications transactionnelles.
2
latency : contrôle les performances des abonnements aux publications transactionnelles.
4
mergeexpiration : contrôle l'expiration imminente des abonnements aux publications de fusion.
5
mergeslowrunduration : contrôle la durée des synchronisations de fusion sur les connexions à faible bande passante (accès à distance).
6
mergefastrunduration : contrôle la durée des synchronisations de fusion sur les connexions haut débit (LAN).
7
mergefastrunspeed : contrôle la vitesse de synchronisation des synchronisations de fusion sur les connexions haut débit (LAN).
8
mergeslowrunspeed : contrôle la vitesse de synchronisation des synchronisations de fusion sur les connexions lentes (accès distant).
enable- valeur Boolean qui indique si le métrique est activé pour la publication.
thresholdValue- valeur entière qui définit le seuil.
shouldAlert- entier qui indique si ce seuil doit générer une alerte.