Scadenza e disattivazione delle sottoscrizioni

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Le sottoscrizioni possono essere disattivate o scadere se non vengono sincronizzate entro il periodo di memorizzazionespecificato. L'azione che si verifica dipende dal tipo di replica e dal periodo di conservazione che viene superato.

Per impostare i periodi di memorizzazione, vedi Impostare il periodo di scadenza per le sottoscrizioni, Impostare il periodo di memorizzazione per la distribuzione per le pubblicazioni transazionali (SQL Server Management Studio), e Configurare la pubblicazione e la distribuzione.

Replica transazionale

La replica transazionale usa il periodo massimo di memorizzazione per la distribuzione (il parametro @max_distretention di sp_adddistributiondb (Transact-SQL)) e il periodo di memorizzazione della pubblicazione (il parametro @retention di sp_addpublication (Transact-SQL)):

  • Se una sottoscrizione non è stata sincronizzata entro il periodo massimo di memorizzazione per la distribuzione (72 ore per impostazione predefinita) e nel database di distribuzione sono presenti modifiche che non sono state recapitate al Sottoscrittore, la sottoscrizione viene contrassegnata come disattivata dal processo Eliminazione della sottoscrizione scaduta in esecuzione nel Distributore. La sottoscrizione deve essere reinizializzata.

  • Se una sottoscrizione non è stata sincronizzata entro il periodo di memorizzazione per la pubblicazione (336 ore per impostazione predefinita), la sottoscrizione scade e viene eliminata dal processo Pulizia dei riferimenti alla sottoscrizione scaduta in esecuzione nel server di pubblicazione. (Prima della correzione in KB4014798, al processo è stato assegnato il nome di Pulizia della distribuzione. La sottoscrizione deve essere ricreata e sincronizzata.

    Se una sottoscrizione push scade, viene completamente rimossa, mentre le sottoscrizioni pull non lo sono. È necessario rimuovere le sottoscrizioni pull nel Sottoscrittore. Per altre informazioni, vedere Delete a Pull Subscription.

Replica di tipo merge

La replica di tipo merge usa il periodo di memorizzazione della pubblicazione (i parametri @retention e @retention_period_unit di sp_addmergepublication (Transact-SQL)). Se una sottoscrizione è scaduta, è necessario reinizializzarla, poiché i relativi metadati vengono rimossi. Le sottoscrizioni che non vengono reinizializzate vengono rimosse dal processo Pulizia delle sottoscrizioni scadute eseguito nel server di pubblicazione. Per impostazione predefinita, questo processo viene eseguito ogni giorno e rimuove tutte le sottoscrizioni push che non sono state sincronizzate per il doppio della durata del periodo di memorizzazione per la pubblicazione. Ad esempio:

  • Se una pubblicazione ha un periodo di memorizzazione di 14 giorni, una sottoscrizione può scadere se non è stata sincronizzata entro 14 giorni.

    Se il server di pubblicazione esegue SQL Server 2005 (9.x) o una versione successiva e l'agente per la sottoscrizione appartiene a SQL Server 2005 (9.x) o a una versione successiva, una sottoscrizione scade solo se sono state apportate modifiche ai dati nella relativa partizione. Ad esempio, si supponga che un Sottoscrittore riceva dati relativi solo ai clienti residenti in Germania. Se il periodo di memorizzazione impostato è pari 14 giorni, la sottoscrizione scade il 14° giorno solo se sono state apportate modifiche ai dati dei clienti tedeschi negli ultimi 14 giorni.

  • È possibile reinizializzare la sottoscrizione da 14 a 27 giorni dopo l'ultima sincronizzazione.

  • Trascorsi 28 giorni dall'ultima sincronizzazione, la sottoscrizione viene eliminata dal processo Pulizia delle sottoscrizioni scadute. Se una sottoscrizione push scade, viene completamente rimossa, mentre le sottoscrizioni pull no. È necessario ripulire le sottoscrizioni pull nel Sottoscrittore. Per altre informazioni, vedere Delete a Pull Subscription.

Considerazioni sull'impostazione del periodo di memorizzazione per la pubblicazione per le pubblicazioni di tipo merge

Tenere sempre presenti le considerazioni seguenti nell'impostazione del periodo di memorizzazione per le pubblicazioni di tipo merge:

  • Il periodo di memorizzazione per le pubblicazioni di tipo merge ha un periodo di prova di 24 ore per adattarsi ai Sottoscrittori dei diversi fusi orari. Se, ad esempio, si imposta un periodo di memorizzazione di un giorno, il periodo di memorizzazione effettivo sarà di 48 ore.

  • La pulizia dei metadati di replica di tipo merge dipende dal periodo di memorizzazione per la pubblicazione:

    • La replica non è in grado di eliminare i metadati dei database di pubblicazione e sottoscrizione prima della scadenza del periodo di memorizzazione. Prestare attenzione nella specifica di un valore elevato per il periodo di conservazione, perché può influire negativamente sulle prestazioni della replica. Se si prevede che la sincronizzazione di tutti i Sottoscrittori verrà eseguita regolarmente entro tale periodo di tempo, è consigliabile specificare un valore inferiore.

    • È possibile specificare che le sottoscrizioni non devono scadere (impostando il valore 0 per @retention), ma è consigliabile non usare questo valore, poiché impedisce l'eliminazione dei metadati.

  • Il periodo di memorizzazione per i server di ripubblicazione deve essere impostato su un valore uguale o minore del periodo di memorizzazione impostato nel server di pubblicazione originale. Impostare lo stesso periodo di memorizzazione delle pubblicazioni per tutti i server di pubblicazione e i relativi partner di sincronizzazione alternativi. L'uso di valori diversi potrebbe causare la mancata convergenza. Se è necessario modificare il valore di conservazione della pubblicazione, reinizializzare il Sottoscrittore per evitare la mancata convergenza dei dati.

  • Se, dopo una pulizia, viene aumentato il periodo di conservazione della pubblicazione e una sottoscrizione tenta di unirsi al Publisher (che ha già eliminato i metadati), la sottoscrizione non scadrà a causa dell'aumento del valore di conservazione. Tuttavia, il server di pubblicazione non dispone di metadati sufficienti per scaricare le modifiche al Sottoscrittore e si avrà pertanto una situazione di non convergenza.