Sintomi
Supponiamo che tu usi le partizioni pre-calcolate nella replica di tipo merge con i filtri con parametri e join in Microsoft SQL Server 2012 o Microsoft SQL Server 2014. Quando si prova a usare l'istruzione Insert nelle tabelle alla radice del filtro (sul lato Publisher), è possibile che si verifichino prestazioni in diminuzione in inserimento.
Risoluzione
Dopo aver applicato questo aggiornamento rapido, è necessario eseguire manualmente la procedura sp_vupgrade_mergeobjects nel database pubblicato. Può aiutare a rigenerare i trigger, le stored procedure e le visualizzazioni specifici degli articoli usati per tenere traccia e applicare le modifiche ai dati per la replica di tipo merge. Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 5 per SQL Server 2014 /en-us/help/3011055
Aggiornamento cumulativo 3 per SQL Server 2012 SP2 /en-us/help/3002049
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Ulteriori informazioni
Inserire in<tabella> trigger merge Insert trigger MSmerge_ins_XXXXe il trigger chiama la procedura MSmerge_expand_sp_XXXX. Se si verifica questo problema, si noterà che l'istruzione Inserisci/Seleziona distinta seguente della procedura di espansione di merge MSmerge_expand_sp_XXXX consuma molto tempo. In questa situazione, le prestazioni dell'inserimento diminuiscono.
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)
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".