Ce moniteur vérifie l'état des agents de distribution pour toutes les publications servies par ce serveur de distribution.
Échec d'un ou plusieurs agents de distribution.
Voici quelques-unes des raisons pouvant expliquer des échecs d’agents de distribution :
L’abonnement n’a pas été initialisé et l’instantané n’est pas disponible.
L'Agent de distribution est en cours d'exécution sous un compte dont les autorisations sont insuffisantes.
Dépassement du délai d'attente de la requête.
Il existe une violation de clé primaire ou une erreur de type « Ligne introuvable » sur l'abonné.
Il est impossible d'établir une connexion aux bases de données de distribution ou d'abonné.
Épuisement de la mémoire pour le segment de Bureau non-interactif. http://support.microsoft.com/kb/949296
L’Agent de distribution n’a pas pu créer de fichier temporaire dans le répertoire « C:\Program Files\Microsoft SQL Server\100\COM » (applicable pour SQL 2008 et SQL 2008 R2) http://support.microsoft.com/kb/956032
L'Agent de distribution ne peut pas voir les fichiers de capture instantanée
Le service SQL Agent n'a pas les privilèges requis.
Paramètres incorrects passés à l'Agent de distribution.
L’Agent de distribution s’exécute sous un compte dont les autorisations sont insuffisantes.
Si plusieurs serveurs sont impliqués dans la topologie de réplication, les agents SQL Server doivent s'exécuter sous un compte de domaine.
Le compte de l'Agent de distribution doit être membre du rôle fixe [db_owner] sur les bases de données de distribution et d'abonné.
Dépassement du délai d'attente de la requête.
Recherchez un éventuel blocage sur le serveur de distribution et l’abonné, et vérifiez si l’Agent de distribution est bloqué. Le cas échéant, résolvez le blocage, puis redémarrez l’Agent.
Augmentez la valeur du délai d’attente de requête de l’Agent de distribution.
Il y a une violation de clé primaire ou des erreurs de type « Ligne introuvable » sur l’abonné.
Vérifiez les propriétés de l’article pour confirmer que toutes les insertions sont répliquées. Mettez à jour et supprimez des commandes pour n’en ignorer aucune.
Vérifiez que les utilisateurs n'ont pas d'accès en écriture à la base de données d'abonné.
Configurez l’Agent de distribution pour qu’il utilise le paramètre -skiperrors afin d’ignorer ces erreurs (utilisez cette solution comme correctif temporaire, puis résolvez le problème sous-jacent).
Impossible d’établir une connexion à la base de données de distribution ou d’abonné.
Le compte de l'Agent de distribution doit être membre du rôle fixe [db_owner] sur les bases de données de distribution et d'abonné. Vérifiez qu'il est possible d'établir une connexion de SQL Server Management Studio aux bases de données de distribution et d'abonné.
Sur les serveurs de distribution et de publication, activez les ports TCP et UDP que SQL Server utilise dans le pare-feu.
Plus de mémoire disponible pour le tas du Bureau non interactif.
Utilisez les solutions de contournement décrites dans KB pour résoudre le problème.
L’Agent de distribution n’a pas pu créer de fichier temporaire dans le répertoire « C:\Program Files\Microsoft SQL Server\100\COM » (applicable pour SQL 2008 et SQL 2008 R2)
Utilisez la solution de contournement décrite dans KB pour résoudre le problème.
L’Agent de distribution ne peut pas lire des fichiers d’instantané.
Utilisez un chemin d'accès UNC pour archiver le dossier de captures instantanées. Partagez le dossier et octroyez des autorisations d'accès en lecture au compte de l'Agent de distribution.
Le service SQL Agent n’a pas les privilèges requis.
Suivez le lien http://msdn.microsoft.com/library/ms143504.aspx et assurez-vous que l’ID de sécurité du service SQL Agent dispose des droits suivants :
Ouvrir une session en tant que service (SeServiceLogonRight)
Remplacer un jeton de niveau processus (SeAssignPrimaryTokenPrivilege)
Ignorer la vérification transversale (SeChangeNotifyPrivilege)
Ajuster les quotas de mémoire pour un processus (SeIncreaseQuotaPrivilege)
Paramètres incorrects transmis à la commande de l’Agent de distribution.
Vérifiez les paramètres passés à la ligne de commande de l'Agent de distribution.
Le processus n’a pas pu effectuer de copie en bloc dans la table
Réduisez la valeur transmise au paramètre -BCPBatchSize dans le travail de l'Agent de distribution
Réexécutez l'Agent de distribution et ajoutez le paramètre -OutputVerboseLevel 2. Vous obtenez ainsi des détails supplémentaires sur l'instruction qui échoue.
Seuls des membres des rôles sysadmin ou db_owner peuvent effectuer cette opération.
Si la base de données de distribution et l’abonné se trouvent dans des domaines différents entre lesquels il n’existe pas de relation d’approbation (plus précisément, le domaine de l’abonné n’approuve pas le domaine de distribution), il convient d’utiliser un compte portant un nom spécifique.
Examinez les détails de l’erreur de l’agent SQL Server sur l’abonné dont le nom constitue la première partie de l’abonnement (Subscription) présenté.
Sur l’abonné, vérifiez que le compte de connexion de cet agent est valide.
Sur l’abonné, vérifiez que le compte de connexion de l’agent a le rôle « sysadmin » ou « db_owner » pour la base de données en cours de réplication.
http://technet.microsoft.com/library/ms147328.aspx
Nom | Description | Valeur par défaut |
Priorité de l'alerte | Définit la priorité de l'alerte. | Normal |
Gravité de l'alerte | Définit la gravité de l'alerte. | Erreur |
Activé | Active ou désactive le flux de travail. | Oui |
Durée estimée du travail | Seuil utilisé pour vérifier la conformité de la planification du travail | 15 |
Génère des alertes | Définit si le flux de travail génère une alerte. | Oui |
Intervalle (secondes) | Intervalle de temps récurrent en secondes, pendant lequel le workflow est exécuté. | 300 |
Afficher les travaux avec un état inconnu | Incluez les travaux dont l’état est inconnu dans la sortie de l’analyse et le contexte de l’alerte. Cela affecte l’intégrité. | Non |
Heure de synchronisation | Heure de synchronisation |
|
Délai d'attente (secondes) | Spécifie la durée pendant laquelle le workflow est autorisé à être exécuté avant d'être fermé et marqué comme un échec. | 300 |
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.2016.Replication.Distributor | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.Replication.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2016.Replication.Monitor.DistributionAgentState" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2016.Replication.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.Replication.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Replication.Monitor.DistributionAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</ConnectionString>
<XPathName>Distribution$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericDistributor']/ConnectionString$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>