サブスクリプションの有効期限の設定

適用対象: SQL ServerAzure SQL Managed Instance

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で サブスクリプションの有効期限の設定をする方法について説明します。 サブスクリプションの期限が切れて削除されるまでの時間は、サブスクリプションの有効期限によって決定されます。 詳細については、「 Subscription Expiration and Deactivation」を参照してください。

このトピックの内容

始める前に

推奨事項

  • サブスクリプションの有効期限は、 パブリケーション保有期間とも呼ばれます。 マージ レプリケーション メタデータのクリーンアップは、この設定に依存します。

    • 保有期間が終了するまで、パブリケーションおよびサブスクリプション データベースでメタデータをクリーンアップすることはできません。 レプリケーション パフォーマンスを低下させる可能性があるため、保有期間に大きな値を指定する際は注意してください。 すべてのサブスクライバーが保有期間内で定期的に同期されることを確実に予測できる場合は、小さい値を使用することをお勧めします。

      マージ パブリケーションの保有期間には、異なるタイム ゾーンのサブスクライバーに対応するため、24 時間の猶予期間があります。 たとえば、保有期間を 1 日に設定した場合、実際の保有期間は 48 時間となります。

    • サブスクリプションの期限が切れないように指定することは可能ですが、メタデータをクリーンアップできなくなるため、この値は使用しないことを強くお勧めします。

SQL Server Management Studio を使用する

[パブリケーションのプロパティ - <パブリケーション]> ダイアログ ボックスの [全般] ページで、サブスクリプションの有効期限を設定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

サブスクリプションの有効期限を設定するには

  1. [パブリケーションのプロパティ - <パブリケーション]> ダイアログ ボックスの [全般] ページで、[サブスクリプションの有効期限] セクションに、サブスクリプションに有効期限を設定するかどうかを指定します。

  2. 有効期限を設定する場合、有効期限の期間を指定します。

Transact-SQL の使用

この値は、レプリケーションのストアド プロシージャを使用して、パブリケーションの作成時に設定することも、後で変更することもできます。

スナップショットまたはトランザクション パブリケーションのサブスクリプションに対して有効期限を設定するには

  1. パブリッシャーで sp_addpublicationを実行します。 @retentionにサブスクリプションの有効期限を時間単位で指定します。 既定の有効期限は 336 時間です。 詳しくは、「 パブリケーションを作成」をご覧ください。

マージ パブリケーションのサブスクリプションに対して有効期限を設定するには

  1. パブリッシャーで sp_addmergepublicationを実行します。 @retentionにサブスクリプションの有効期限を指定します。 @retention_period_unitに有効期限の単位を指定します。指定できる値は次のいずれかです。

    • 1 = 週

    • 2 = 月

    • 3 = 年

    既定の有効期限は 14 日です。 詳しくは、「 パブリケーションを作成」をご覧ください。

スナップショットまたはトランザクション パブリケーションのサブスクリプションに対して有効期限を変更するには

  1. パブリッシャーで sp_changepublicationを実行します。 @propertyretention を、 @valueにサブスクリプションの新しい有効期限を時間単位で指定します。

マージ パブリケーションのサブスクリプションに対して有効期限を変更するには

  1. パブリッシャーで sp_helpmergepublicationを実行します。引数には @publication@publisherを指定します。 結果セットの retention_period_unit の値 (次のいずれか) を確認します。

    • 0 = 日

    • 1 = 週

    • 2 = 月

    • 3 = 年

  2. パブリッシャーで sp_changemergepublicationを実行します。 @propertyretention を指定します。また、 @valueには、手順 1. の保有期間の単位に基づいて、サブスクリプションの新しい有効期限をテキストで指定します。

  3. (省略可) パブリッシャーで sp_changemergepublicationを実行します。 @propertyretention_period_unit を、 @valueには、サブスクリプション有効期限に使用する新しい単位を指定します。

参照

Replication System Stored Procedures Concepts
サブスクリプションの有効期限と非アクティブ化