サブスクリプションの満了と無効化

適用対象:SQL ServerAzure SQL Managed Instance

サブスクリプションは、指定した 保有期間内に同期されなかった場合、非アクティブ化されるか、期限切れにされる可能性があります。 行われる処理は、レプリケーションの種類と保有期間が過ぎているかどうかによって異なります。

保有期間を設定する場合は、「サブスクリプションの有効期限の設定」、「トランザクション パブリケーションのディストリビューションの保有期間の設定 (SQL Server Management Studio)」および「パブリッシングおよびディストリビューションの構成」を参照してください。

トランザクションレプリケーション

トランザクション レプリケーションでは、ディストリビューションの最大保有期間 (@max_distretention パラメーター) およびパブリケーションの保有期間 (@retention パラメーター) が使用されます。

  • 購読が最大配布保持期間(デフォルトは72時間)内に同期されておらず、配布データベースの変更が加入者に届けられていない場合、配布者上で実行される 「期限切れ購読」クリーンアップ ジョブによってサブスクリプションは無効化とマークされます。 サブスクリプションの初期化が必要です。

  • 出版保持期間(デフォルトは336時間)内に同期されなければ、その購読は期限切れとなり、Publisher上で動作する期限切れ購読のクリーンアップジョブによって解除されます。 ( KB4014798年の修正前は、ジョブ名は Distribution cleanupでした。)サブスクリプションを再作成し同期しなければなりません。

    プッシュサブスクリプションが期限切れになると完全に削除されますが、プルサブスクリプションはそうではありません。 プル サブスクリプションは、サブスクライバー側で削除する必要があります。 詳細については、「 Delete a Pull Subscription」を参照してください。

マージレプリケーション

マージ レプリケーションでは、パブリケーションの保持期間 (sp_addmergepublication (Transact-SQL)@retention パラメーターと @retention_period_unit パラメーター) を使用します。 サブスクリプションが期限切れになると、サブスクリプションのメタデータが削除されるため、再初期化しなければなりません。 Publisher上で動作する期限切れのサブスクリプションクリーンアップジョブは、再初期化されていないサブスクリプションを解除します。 デフォルトでは、この仕事は毎日行われます。 パブリケーション保持期間の 2 倍の期間にわたって同期されないプッシュ サブスクリプションは、すべて削除されます。 次に例を示します。

  • 出版物の保存期間が14日の場合、同期が14日以内に完了しなければ購読が失効することがあります。

    PublisherがSQL Server 2005(9.x)以降のバージョンを実行しており、サブスクリプションのエージェントがSQL Server 2005(9.x)以降のバージョンであれば、サブスクリプションはそのサブスクリプションのパーティションにデータが変更された場合にのみ期限切れとなります。 たとえば、サブスクライバーが、ドイツの顧客に関する顧客データのみを受信するとします。 保持期間が14日に設定されている場合、過去14日間にドイツの顧客データに変更があった場合にのみ14日目にサブスクリプションが終了します。

  • 最後の同期から14日から27日の間にサブスクリプションを再初期化できます。

  • 最後の同期から28日後に、 期限切れのサブスクリプションクリーンアップ ジョブがサブスクリプションを解除します。 プッシュサブスクリプションが期限切れになると完全に削除されますが、プルサブスクリプションはそうではありません。 プル サブスクリプションは、サブスクライバー側で削除する必要があります。 詳細については、「 Delete a Pull Subscription」を参照してください。

合併出版物の出版保持期間を設定する際の考慮事項

マージ パブリケーションの保有期間を設定する場合は、以下の点に注意してください。

  • 合併出版物の保存期間には、異なるタイムゾーンの購読者に対応するため24時間の猶予期間が含まれています。 例えば、1日の保持期間を設定すると、実際の保持期間は48時間になります。

  • マージレプリケーションのメタデータのクリーンアップは、公開保持期間によって異なります:

    • レプリケーションでは、保有期間に達するまで、パブリケーション データベースとサブスクリプション データベースのメタデータをクリーンアップできません。 保持期間の高い値を指定する場合は、レプリケーション性能に悪影響を及ぼす可能性があるため注意してください。 すべての加入者がその期間内に定期的に同期すると確実に予測できるなら、設定を下げてください。

    • サブスクリプションが期限切れにならない( @retentionの値は0)と指定できますが、メタデータはクリーンアップできないため使わないでください。

  • 任意の再出版社の保持期間を、元のPublisherで設定した保持期間と同等またはそれ以下の値に設定します。 また、すべての出版社およびその代替同期パートナーに対して同じ出版保持値を使用してください。 異なる値を使うことで収束性が失われる可能性があります。 パブリケーションの保有期間の値を変更する必要がある場合は、サブスクライバーを再初期化して、データの未集約が発生しないようにします。

  • クリーンアップ後に出版保持期間を延長し、サブスクリプションがすでにメタデータを削除したPublisherとマージしようとしても、保持価値が増えたためサブスクリプションは期限切れになりません。 しかし、Publisherはサブスクライバーに変更をダウンロードするのに十分なメタデータを持っておらず、これが収束しないことにつながります。