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 certaines 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 fichiers temporaires 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é.
! FACTICE ! Dépassement du délai d'attente de la requête.
Vérifiez qu'il n'y a pas de blocage sur le serveur de distribution et l'abonné, et que l'Agent de distribution n'est pas bloqué. Le cas échéant, résolvez le blocage, puis redémarrez l'Agent.
Augmentez la valeur du délai 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 supprimer 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 utilisés par SQL Server dans le pare-feu.
! FACTICE ! 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.
! FACTICE ! La distributionL'Agent ne peut pas lireFichiers de capture instantanée
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.
! FACTICE ! Privilèges requisne sont pas détenus par le service SQL Agent.
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 par le domaine de distribution), un compte nommé spécifique doit être utilisé.
Consultez les détails d'erreur de SQL Server Agent sur l'abonné. Le nom de celui-ci correspond à la première partie de l'abonnement (Subscription) indiqué.
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.
! FACTICE ! http://technet.microsoft.com/library/ms147328.aspx
Nom | Description | Valeur par défaut |
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 (secondes) | Intervalle de temps récurrent en secondes, pendant lequel le workflow est exécuté. | 300 |
Afficher les travaux avec un état inconnu | Inclure les travaux dont l'état est inconnu à la sortie d'analyse et au contexte de l'alerte. Cela affecte l'intégrité | Non |
Délai d'attente (secondes) | Délai d'attente (secondes) | 300 |
Heure de synchronisation | Heure de synchronisation |
|
Target | Microsoft.SQLServer.2012.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.2012.Replication.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.DistributionAgentState" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.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>300</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/>
</Configuration>
</UnitMonitor>