Sintomi
Supponiamo che tu usi la replica di tipo merge che il Publisher è in uso in Microsoft SQL Server 2012 o SQL Server 2012 Service Pack 1 (SP1). Dopo aver aggiornato l'autore a SQL Server 2012 Service Pack 2 (SP2), non è possibile riavviare l'agente di merge. Viene inoltre visualizzato il seguente messaggio di errore:
Il processo di Unione non può eseguire la pulizia dei metadati basata sulla conservazione nel database "MergePub". Se il problema persiste, provare a aumentare il timeout della query per questo processo oppure provare a ridurre il periodo di conservazione. Quando si esegue la risoluzione dei problemi, riavviare la sincronizzazione con la registrazione dettagliata della cronologia e specificare un file di output a cui scrivere.
Quando si esegue manualmente la sp_mergemetadataretentioncleanup stored procedure nel server di pubblicazione, la stored procedure non riesce e viene visualizzato il messaggio di errore seguente:
Msg 206, livello 16, stato 2, procedura sp_mergemetadataretentioncleanup, linea 63Operand tipo scontro: bigint è incompatibile con uniqueidentifierMsg 206, livello 16, stato 2, routine sp_mergemetadataretentioncleanup, linea 65Operand tipo Clash: int è incompatibile con uniqueidentifier
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
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:
Soluzione alternativa
Per risolvere il problema, eseguire la query seguente nel database pubblicato:if exists (select * from sys.columns sc inner join sys.types st on sc.system_type_id = st.system_type_id where object_id = object_id('dbo.sysmergesubscriptions') and sc.name = 'last_local_recgen' and st.name = 'uniqueidentifier') begin alter table dbo.sysmergesubscriptions drop column last_local_recgen alter table dbo.sysmergesubscriptions add last_local_recgen bigint null end
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".