MSSQL_REPL027183
Détails du message
Nom du produit |
SQL Server |
Version du produit |
10.0 |
Numéro de version |
|
ID d'événement |
27183 |
Source de l'événement |
MSSQLSERVER |
Composant |
Moteur de base de données SQL Server |
Nom symbolique |
|
Texte du message |
Le processus de fusion a omis d'énumérer les changements dans les articles dotés de filtres de lignes paramétrés. Si cette erreur persiste, augmentez le délai d'attente de la requête pour ce processus, réduisez la période de rétention de la publication et améliorez les index sur les tables publiées. |
Explication
Cette erreur est émise si le délai d'attente d'un Agent de fusion est dépassé lors du traitement des modifications dans une publication filtrée. Le dépassement du délai d'attente peut être causé par l'un des problèmes suivants :
Non-utilisation de l'optimisation des partitions précalculées.
Fragmentation de l'index sur les colonnes utilisées pour le filtrage.
Tables volumineuses de métadonnées de fusion, comme MSmerge_tombstone, MSmerge_contents et MSmerge_genhistory.
Tables filtrées qui ne sont pas jointes sur une clé unique, et filtres de jointures qui impliquent un grand nombre de tables.
Action de l'utilisateur
Pour résoudre ce problème :
Augmentez la valeur du paramètre -QueryTimeOut pour l'Agent de fusion afin de permettre au processus de se poursuivre pendant que vous résolvez les problèmes sous-jacents qui provoquent cette erreur. Les paramètres d'Agent peuvent être spécifiés dans les profils d'agents et dans la ligne de commande. Pour plus d'informations, consultez :
Utilisez si possible l'optimisation des partitions précalculées. Cette optimisation est utilisée par défaut si un certain nombre de conditions de publication sont remplies. Pour plus d'informations sur ces conditions, consultez Optimisation des performances des filtres paramétrés avec des partitions précalculées. Si la publication ne remplit pas ces conditions, envisagez de modifier sa conception.
Spécifiez la valeur la plus basse possible pour la période de rétention de la publication, parce que la réplication ne peut pas nettoyer les métadonnées de la publication et des bases de données d'abonnement tant que la période de rétention n'est pas achevée. Pour plus d'informations, consultez Expiration et désactivation des abonnements.
Dans le cadre de la gestion d'une réplication de fusion, contrôlez de temps en temps le développement des tables système associées à cette réplication : MSmerge_contents, MSmerge_genhistory et MSmerge_tombstone, MSmerge_current_partition_mappings et MSmerge_past_partition_mappings. Périodiquement, réindexez ces tables. Pour plus d'informations, consultez Réorganisation et reconstruction d'index.
Assurez-vous que les colonnes utilisées pour le filtrage sont correctement indexées et le cas échéant rebâtissez les index. Pour plus d'informations, consultez Réorganisation et reconstruction d'index.
Définissez la propriété join_unique_key sur les filtres de jointure qui sont basés sur des colonnes uniques Pour plus d'informations, consultez Filtres de jointure.
Limitez le nombre de tables dans la hiérarchie des filtres de jointure. Si vous générez des filtres de jointure impliquant au moins cinq tables, envisagez d'autres solutions : ne filtrez pas des tables petites, non sujettes à changement ou qui sont essentiellement des tables de correspondance. N'utilisez des filtres de jointure qu'entre des tables qui doivent être partitionnées entre les abonnements.
Réduisez entre les synchronisations le nombre de changements apportés aux tables filtrées, ou exécutez l'Agent de fusion plus souvent. Pour plus d'informations sur la spécification d'horaires de synchronisation, consultez Procédure : spécifier des planifications de synchronisation (SQL Server Management Studio) et Procédure : spécifier des planifications de synchronisation (programmation Transact-SQL de la réplication).