Symptômes
Supposez que vous utilisez des partitions précalculées dans la réplication de fusion avec des filtres paramétré et de jointure dans Microsoft SQL Server 2012 ou Microsoft SQL Server 2014. Lorsque vous essayez d’utiliser l’instruction Insert dans des tables à la racine du filtre (sur le côté de Publisher), il est possible que vous subissiez une diminution des performances lors de l' insertion.
Résolution
Après avoir appliqué ce correctif, vous devez exécuter la procédure sp_vupgrade_mergeobjects manuellement sur la base de données publiée. Il peut aider à régénérer les déclencheurs, procédures stockées et affichages spécifiques à l’article qui sont utilisés pour suivre et appliquer des modifications de données pour la réplication de fusion. Le problème a été résolu dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 5 pour SQL Server 2014 /en-us/help/3011055
Mise à jour cumulative 3 pour SQL Server 2012 SP2 /en-us/help/3002049
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Informations supplémentaires
Insérez dans<table> déclencheurs de déclenchement de la fusion et du déclencheur d’insertion MSmerge_ins_XXXX, et le déclencheur appelle la procédure MSmerge_expand_sp_XXXX. Si vous rencontrez ce problème, vous remarquerez que l’instruction Insert/Select distinct suivante de la procédure de développement de la fusion MSmerge_expand_sp_XXXX consomme beaucoup de temps. Dans ce cas, les performances de l’opération d’insertion diminuent.
insert into dbo.MSmerge_current_partition_mappings with (rowlock) (publication_number, tablenick, rowguid, partition_id) select distinct 1, mc.tablenick, mc.rowguid, v.partition_id from dbo.MSmerge_contents mc with (rowlock) JOIN dbo.[MSmerge_dynamic_filter_merge_new_settings_PARTITION_VIEW] v with (rowlock) ON mc.tablenick = <tablenick> and mc.rowguid = v.[rowguid] and mc.marker = @child_marker and v.partition_id in (select partition_id from dbo.MSmerge_current_partition_mappings cpm with (rowlock) JOIN dbo.MSmerge_contents mc2 with (rowlock) ON cpm.rowguid = mc2.rowguid and mc2.marker = @marker) where not exists (select * from MSmerge_current_partition_mappings with (readcommitted, rowlock, readpast) where publication_number = 1 and tablenick = <tablenick> and rowguid = v.[rowguid] and partition_id = v.partition_id)
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.