Ce moniteur vérifie la latence des commandes de la base de données de distribution en attente de livraison aux abonnés. Notez que ce moniteur est désactivé pour les abonnements de fusion.
Ce moniteur collecte des informations similaires à celles du moniteur de réplication qui affiche les commandes en attente sous l'onglet Commandes non distribuées, ainsi que la durée estimée de livraison de ces commandes. Si la durée estimée est supérieure à celle d'une période seuil, une alerte est déclenchée pour afficher les informations. Notez que ce moniteur est désactivé pour les abonnements de fusion.
http://msdn.microsoft.com/library/ms183374.aspx
L'Agent de distribution est peut-être arrêté.
De grandes quantités de transactions en attente avec de nombreuses commandes sont peut-être validées sur la base de données du serveur de publication et répliquées sur la base de données de distribution ;
L'agent de distribution rencontre peut-être des problèmes de performances durant la lecture de la base de données de distribution ou l'écriture dans la base de données d'abonné.
Si les valeurs -MaxDeliveredTransactions et -Continuous sont toutes deux spécifiées, l'Agent de distribution livre le nombre spécifié de transactions puis s'arrête (bien que -Continuous soit spécifié). Vous devez redémarrer l'Agent de distribution une fois le travail terminé.
Si l'alerte est due à des transactions volumineuses dans la base de données du serveur de publication, évaluez la durée estimée de livraison. Réinitialisez l'abonnement si la durée de livraison estimée est supérieure à la durée de création et d'application d'un instantané.
Si l'agent de distribution rencontre des problèmes de performances lors de la lecture de la base de données de distribution, exécutez une mise à jour des statistiques avec l'option d'analyse complète (fullscan) des tables de distribution.
Si l'agent de distribution rencontre des problèmes de performances durant l'écriture sur l'abonné, vérifiez s'il y a des blocages ou des attentes de ressources sur la base de données d'abonné, et résolvez-les.
Essayez de modifier les valeurs des paramètres ci-dessous pour voir si cela peut améliorer les performances de l'Agent de distribution :
TailleLotValidé
Nombre de transactions à émettre à l'Abonné avant l'émission d'une instruction COMMIT. La valeur par défaut est 100.
DépassementDélaiAttenteRequête
Nombre de secondes avant l'expiration de la requête. La valeur par défaut est 1 800 secondes.
FluxAbonnements
Nombre de connexions autorisées par l'Agent de distribution pour appliquer des traitements par lots de modifications en parallèle à un abonné. Pour un serveur de publication SQL Server, une plage de valeurs comprises entre 1 et 64 est prise en charge
https://msdn.microsoft.com/library/ms173804.aspx)
Nom | Description | Valeur par défaut |
Priorité d'alerte | Définit la priorité de l'alerte. | Normale |
Gravité d'alerte | Définit la gravité de l'alerte. | Avertissement |
Activé | Active ou désactive le flux de travail. | Oui |
Génère des alertes | Définit si le flux de travail génère une alerte. | Oui |
Intervalle (en secondes) | Intervalle régulier (en secondes) auquel exécuter le flux de travail. | 300 |
Heure de synchronisation | Heure de synchronisation |
|
Seuil | Seuil | 60 |
Délai d'attente (secondes) | Spécifie la durée pendant laquelle le flux de travail est autorisé à s'exécuter avant d'être fermé et marqué comme ayant échoué. | 200 |
Délai d’attente pour la connexion de base de données (secondes) | Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée. | 15 |
Target | Microsoft.SQLServer.Replication.Windows.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTime.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription']/SubscriptionName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='EstimatedTime']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Distributor$</ConnectionString>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationName$</Publication>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
<CheckMachineAndInstanceName>false</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>