Prenumerationsutgång och avaktivering

gäller för:SQL ServerAzure SQL Managed Instance

Prenumerationer kan inaktiveras eller upphöra att gälla om de inte synkroniseras inom en angiven kvarhållningsperiod. Vilken åtgärd som inträffar beror på vilken typ av replikering och kvarhållningsperiod som överskrids.

Information om hur du anger kvarhållningsperioder finns i Ange förfalloperiod för prenumerationer, Ange kvarhållningsperiod för distribution för transaktionspublikationer (SQL Server Management Studio) och Konfigurera publicering och distribution.

Transaktionsreplikering

Transaktionsreplikering använder den maximala kvarhållningsperioden för distribution (parametern @max_distretentionför sp_adddistributiondb (Transact-SQL)) och kvarhållningsperioden för publikationen (parametern @retentionför sp_addpublication (Transact-SQL)):

  • Om en prenumeration inte är synkroniserad inom den maximala distributionstiden (standard 72 timmar) och det finns ändringar i distributionsdatabasen som inte levereras till prenumeranten, markeras prenumerationen som avaktiverad av rensningsjobbet för utgångna prenumerationer som körs på distributören. Du måste starta om prenumerationen.

  • Om en prenumeration inte synkroniseras inom publiceringstiden (standard 336 timmar) går prenumerationen ut och tas bort av upprensningsjobbet för utgångna prenumerationer som körs på Publisher. (Före fixen i KB4014798 hette jobbet Distribution cleanup.) Du måste återskapa och synkronisera prenumerationen.

    Om en push-prenumeration går ut tas den helt bort, men pull-prenumerationer gör det inte. Du måste rensa pull-prenumerationer hos prenumeranten. Mer information finns i Ta bort en pull-prenumeration.

Slå samman replikering

Sammanslagningsreplikering använder kvarhållningsperioden för publikationen (parametrarna @retention och @retention_period_unit för sp_addmergepublication (Transact-SQL)). När en prenumeration går ut måste du ominitialisera den eftersom processen tar bort metadata för prenumerationen. Rensningsjobbet för utgångna prenumerationer som körs på Publishern tar bort prenumerationer som inte återinitieras. Som standard körs detta jobb dagligen. Den tar bort alla push-prenumerationer som inte synkroniserar under dubbelt så lång tid som publiceringsperioden. Till exempel:

  • Om en publikation har en förvaringstid på 14 dagar kan en prenumeration löpa ut om den inte synkroniseras inom 14 dagar.

    Om Publisher kör SQL Server 2005 (9.x) eller en senare version och agenten för prenumerationen kommer från SQL Server 2005 (9.x) eller en senare version, löper prenumerationen endast ut om det sker ändringar i datan i den prenumerationens partition. Anta till exempel att en prenumerant endast tar emot kunddata för kunder i Tyskland. Om lagringsperioden sätts till 14 dagar löper prenumerationen ut på dag 14 endast om det sker ändringar i de tyska kunduppgifterna under de senaste 14 dagarna.

  • Från 14 dagar till 27 dagar efter senaste synkronisering kan du återinitiera prenumerationen.

  • 28 dagar efter den senaste synkroniseringen tar rensningsjobbet för utgångna prenumerationer bort prenumerationen. Om en push-prenumeration går ut tas den helt bort, men pull-prenumerationer gör det inte. Du måste rensa pull-prenumerationer hos prenumeranten. Mer information finns i Ta bort en pull-prenumeration.

Överväganden vid fastställande av lagringstiden för publikationer som sammanslagits

Tänk på följande när du anger kvarhållningsperioden för sammanslagningspublikationer:

  • Behållningsperioden för sammanslagningspublikationer inkluderar en 24-timmars frist för att tillgodose prenumeranter i olika tidszoner. Till exempel, om du sätter en lagringstid på en dag, är den faktiska lagringstiden 48 timmar.

  • Rensningen av metadata för sammanfogningsreplikering beror på publikationens kvarhållningsperiod:

    • Replikering kan inte rensa metadata i publikations- och prenumerationsdatabaserna förrän kvarhållningsperioden har nåtts. Var försiktig när du anger ett högt värde för retentionsperioden, eftersom det kan påverka replikationsprestandan negativt. Använd en lägre inställning om du pålitligt kan förutse att alla prenumeranter kommer att synkronisera regelbundet inom den tidsperioden.

    • Du kan ange att prenumerationer aldrig går ut (värdet 0 för @retention), men använd inte detta värde eftersom metadata inte kan rensas.

  • Sätt lagringstiden för varje republisher till ett värde lika med eller lägre än lagringstiden som sattes hos den ursprungliga Publisher. Använd också samma värde för publiceringsretention för alla förlag och deras alternativa synkroniseringspartners. Att använda olika värden kan leda till icke-konvergens. Om du behöver ändra kvarhållningstiden för publikationen, återinitierar du prenumeranten för att undvika att data inte konvergerar.

  • Om du ökar lagringstiden för publikationer efter en rensning och en prenumeration försöker slå ihop sig med Publisher (som redan raderat metadatan), kommer prenumerationen inte att gå ut på grund av det ökade retentionsvärdet. Men Publisher har inte tillräckligt med metadata för att ladda ner ändringar till prenumeranten, vilket leder till icke-konvergens.