Problembeschreibung
Angenommen, Sie verwenden vorausberechnete Partitionen in der Mergereplikation mit parametrisierten und Verknüpfungsfiltern in Microsoft SQL Server 2012 oder Microsoft SQL Server 2014. Wenn Sie versuchen, die Insert -Anweisung in Tabellen am Stamm des Filters (auf Publisher-Seite) zu verwenden, kann es bei der Einfügungzu einer verminderten Leistung kommen.
Fehlerbehebung
Nachdem Sie diesen Hotfix angewendet haben, müssen Sie die sp_vupgrade_mergeobjects Prozedur manuell für die veröffentlichte Datenbank ausführen. Sie kann dazu beitragen, die artikelspezifischen Trigger, gespeicherten Prozeduren und Ansichten zu regenerieren, die zum nachvollziehen und Anwenden von Datenänderungen für die Mergereplikation verwendet werden. Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 5 für SQL Server 2014 /en-us/help/3011055
Kumulatives Update 3 für SQL Server 2012 SP2 /en-us/help/3002049
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Schauen Sie sich die neuesten kumulativen Updates für SQL Server an:
Weitere Informationen
Einfügen in<Tabelle> Triggers Merge INSERT Trigger MSmerge_ins_XXXX, und der Trigger ruft die Prozedur MSmerge_expand_sp_XXXXauf. Wenn dieses Problem auftritt, werden Sie feststellen, dass die folgende INSERT/SELECT DISTINCT -Anweisung der Zusammenführungs Erweiterungs Prozedur MSmerge_expand_sp_XXXX viel Zeit in Anspruch nimmt. In diesem Fall verringert sich die Leistung von INSERT.
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)
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.