Modalità di gestione della scadenza della sottoscrizione e della rimozione dei metadati con la replica di tipo merge
Una sottoscrizione di una pubblicazione di tipo merge scade se non è stata sincronizzata con il server di pubblicazione nel periodo di memorizzazione della pubblicazione. Il periodo di memorizzazione predefinito è 14 giorni e viene impostato mediante i parametri @retention e @retention_period_unit di sp_addmergepublication (Transact-SQL). Il parametro @retention_period_unit richiede che il livello di compatibilità della pubblicazione sia pari a 90RTM o superiore. Per i Sottoscrittori in cui sono in esecuzione versioni precedenti di Microsoft SQL Server, @retention_period_unit è sempre impostato su "day". Per ulteriori informazioni sul livello di compatibilità, vedere la sezione relativa al livello di compatibilità per le pubblicazioni di tipo merge nell'argomento Utilizzo di più versioni di SQL Server in una topologia di replica.
Quando una sottoscrizione scade, i relativi metadati vengono rimossi ed è pertanto necessario reinizializzare la sottoscrizione. Per ulteriori informazioni, vedere la sezione "Rimozione dei metadati" in questo argomento. Le sottoscrizioni che non vengono reinizializzate vengono rimosse mediante il processo Eliminazione dei riferimenti alla sottoscrizione scaduta eseguito sul server di pubblicazione. Per impostazione predefinita, questo processo viene eseguito ogni giorno e consente di rimuovere tutte le sottoscrizioni push che non sono state sincronizzate durante un intervallo di tempo doppio rispetto al periodo di memorizzazione della pubblicazione. Ad esempio:
Se una pubblicazione ha un periodo di memorizzazione pari a 14 giorni, una sottoscrizione può scadere se non viene sincronizzata in questo intervallo di tempo.
Se il server di pubblicazione esegue SQL Server 2005 o una versione successiva e l'agente per la sottoscrizione appartiene a SQL Server 2005 o a una versione successiva, una sottoscrizione scade solo se sono state apportate modifiche ai dati nella relativa partizione. Si supponga, ad esempio, che un Sottoscrittore riceva dati solo relativi ai clienti in Germania. Se il periodo di memorizzazione è impostato su 14 giorni, la sottoscrizione scadrà il quattordicesimo giorno solo se sono state apportate modifiche ai dati dei clienti in Germania negli ultimi 14 giorni.
Sarà possibile reinizializzare la sottoscrizione nel periodo di tempo compreso tra il quattordicesimo e il ventisettesimo giorno dopo l'ultima sincronizzazione.
Dopo 28 giorni dall'ultima sincronizzazione, la sottoscrizione verrà rimossa mediante il processo Eliminazione dei riferimenti alla sottoscrizione scaduta. Diversamente dalle sottoscrizioni push, le sottoscrizioni pull scadute non vengono completamente rimosse. Le sottoscrizioni pull devono essere eliminate nel Sottoscrittore. Per ulteriori informazioni, vedere Procedura: Eliminazione di una sottoscrizione pull (programmazione Transact-SQL della replica).
Considerazioni relative all'impostazione del periodo di memorizzazione della pubblicazione
Quando si imposta il periodo di memorizzazione delle pubblicazioni di tipo merge, tenere presente quanto segue:
La rimozione dei metadati della replica di tipo merge dipende dal periodo di memorizzazione della pubblicazione:
La replica consente di eliminare i metadati nei database di pubblicazione e di sottoscrizione solo dopo che sarà stato raggiunto il periodo di memorizzazione. Prestare particolare attenzione quando si specifica un valore elevato per il periodo di memorizzazione, in quanto può influire negativamente sulle prestazioni della replica. Se si prevede che la sincronizzazione di tutti i Sottoscrittori verrà eseguita regolarmente nel periodo di tempo specificato, è consigliabile utilizzare un valore inferiore.
È possibile specificare sottoscrizioni senza scadenza impostando il valore 0 per @retention, ma è consigliabile non utilizzare questo valore perché in questo modo non sarà possibile eliminare i metadati.
Il periodo di memorizzazione per i server di ripubblicazione deve essere impostato su un valore uguale o inferiore al periodo di memorizzazione impostato nel server di pubblicazione originale. Se si utilizzano partner di sincronizzazione alternativi, è consigliabile utilizzare gli stessi valori di memorizzazione della pubblicazione per i server di pubblicazione e tali partner. L'impostazione di periodi di memorizzazione diversi potrebbe causare la mancata convergenza dei dati. Se è necessario modificare il periodo di memorizzazione della pubblicazione, reinizializzare il Sottoscrittore per evitare la mancata convergenza dei dati.
Se, dopo l'eliminazione dei metadati, si incrementa il periodo di memorizzazione della pubblicazione e una sottoscrizione tenta di eseguire il merge con il server di pubblicazione (in cui i metadati sono già stati eliminati), a causa dell'incremento del periodo di memorizzazione la sottoscrizione non scadrà. Nel server di pubblicazione, tuttavia, non sarà disponibile una quantità di metadati sufficiente per scaricare le modifiche apportate al Sottoscrittore e si verificherà pertanto una situazione di mancata convergenza dei dati.
Rimozione dei metadati
La rimozione dei metadati nella replica di tipo merge viene eseguita mediante la stored procedure sp_mergemetadataretentioncleanup (Transact-SQL). Il momento preciso in cui viene eseguita la procedura di eliminazione dipende dal periodo di memorizzazione della pubblicazione. La procedura di rimozione viene chiamata dall'agente di merge ogni volta che quest'ultimo viene eseguito per una sottoscrizione. Tale procedura consente di rimuovere i metadati che hanno superato il periodo di memorizzazione della pubblicazione dalle tabelle di sistema seguenti:
Queste tabelle vengono utilizzate da tutte le pubblicazioni di un database di pubblicazione. In presenza di più pubblicazioni, viene sempre utilizzato il periodo di memorizzazione più lungo per stabilire la data di rimozione dei metadati.
Vedere anche