Symptomy
Załóżmy, że korzystasz z wstępnie obliczonych partycji w replikacji scalającej z filtrami sparametryzowanymi i sprzężonymi w programie Microsoft SQL Server 2012 lub Microsoft SQL Server 2014. Podczas próby użycia instrukcji INSERT w tabelach w katalogu głównym filtru (po stronie wydawcy) może wystąpić spadek wydajności wstawiania.
Rozwiązanie
Po zastosowaniu tej poprawki należy wykonać procedurę sp_vupgrade_mergeobjects ręcznie w opublikowanej bazie danych. Może on ułatwić ponowne generowanie wyzwalaczy specyficznych dla artykułu, procedur przechowywanych i widoków, które są używane do śledzenia i stosowania zmian danych w replikacji scalającej. Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 5 dla programu SQL Server 2014 /en-us/help/3011055
Zbiorcza aktualizacja 3 dla programu SQL Server 2012 z dodatkiem SP2 /en-us/help/3002049
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Więcej informacji
Wstawianie do<tabeli> wyzwalaczy scalanie MSmerge_ins_XXXXWstawianie wyzwalacza, a wyzwalacz wywoła procedurę MSmerge_expand_sp_XXXX. Jeśli wystąpi ten problem, możesz zauważyć, że następująca instrukcja INSERT/SELECT DISTINCT procedury rozszerzania scalania MSmerge_expand_sp_XXXX zajmuje dużo czasu. W tej sytuacji wydajność wstawiania maleje.
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)
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".