Partager via


MSSQL_REPL027183

S’applique à : SQL Server Azure SQL Managed Instance

Détails du message

Attribut Valeur
Nom du produit SQL Server
ID de l’é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 n'a pas pu énumérer les modifications apportées aux articles via le filtre de lignes paramétrable. Si le problème persiste, augmentez le délai de requête du processus, réduisez la période de rétention de la publication, puis améliorez les index des 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_contentset 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 le 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 des agents peuvent être spécifiés dans des profils d'agent et sur la ligne de commande. Pour plus d’informations, consultez l’article suivant :

  • 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 exigences, consultez Optimiser les 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, voir Subscription Expiration and Deactivation.

  • 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, MSmerge_tombstone, MSmerge_current_partition_mappingset MSmerge_past_partition_mappings. Réindexez périodiquement ces tables. Pour plus d’informations, consultez Réorganiser et reconstruire des 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éorganiser et reconstruire des 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, voir Join Filters.

  • Limitez le nombre de tables dans la hiérarchie du filtre de jointure. Si vous générez des filtres de jointure pour au moins cinq tables, envisagez d'autres solutions : ne filtrez pas les petites tables, les tables qui ne changent pas ou les tables de recherche principales. Utilisez des filtres de jointure seulement entre des tables qui doivent être partitionnées entre des 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 définition de planifications de synchronisation, consultez Specify Synchronization Schedules.