適用対象:SQL Server
Azure SQL Managed Instance
このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server で サブスクリプションの有効期限の設定をする方法について説明します。 サブスクリプションの期限が切れて削除されるまでの時間は、サブスクリプションの有効期限によって決定されます。 詳細については、「 Subscription Expiration and Deactivation」を参照してください。
推奨事項
サブスクリプションの有効期限は、 パブリケーション保有期間とも呼ばれます。 マージ レプリケーション メタデータのクリーンアップは、この設定に依存します。
保存期間に達するまで、レプリケーションはパブリケーション データベースおよびサブスクリプション データベース内のメタデータをクリーンアップできません。 リテンション期間に高い値を指定する場合は、レプリケーションのパフォーマンスに悪影響を及ぼす可能性があるため、注意が必要です。 すべてのサブスクライバーが保有期間内で定期的に同期されることを確実に予測できる場合は、小さい値を使用することをお勧めします。
マージ パブリケーションの保有期間には、異なるタイム ゾーンのサブスクライバーに対応するため、24 時間の猶予期間があります。 たとえば、保有期間を 1 日に設定した場合、実際の保有期間は 48 時間となります。
サブスクリプションの期限が切れないように指定することは可能ですが、メタデータをクリーンアップできなくなるため、この値は使用しないことを強くお勧めします。
SQL Server Management Studio を使用する
[Publication Properties - Publication] ダイアログ ボックスの [全般] ページで、サブスクリプションの期限を設定します。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。
サブスクリプションの有効期限を設定するには
Publication の [パブリケーションのプロパティ] ダイアログ ボックスの [全般] ページにある [サブスクリプションの有効期限] セクションで、サブスクリプションの有効期限が切れるようにするかどうかを指定します。
有効期限を設定する場合、有効期限の期間を指定します。
Transact-SQL の使用
この値は、レプリケーションのストアド プロシージャを使用して、パブリケーションの作成時に設定することも、後で変更することもできます。
スナップショットまたはトランザクション パブリケーションのサブスクリプションに対して有効期限を設定するには
- パブリッシャーで sp_addpublicationを実行します。 @retentionにサブスクリプションの有効期限を時間単位で指定します。 既定の有効期限は 336 時間です。 詳しくは、「 パブリケーションを作成」をご覧ください。
マージ パブリケーションのサブスクリプションに対して有効期限を設定するには
パブリッシャーで sp_addmergepublicationを実行します。 @retentionにサブスクリプションの有効期限を指定します。 @retention_period_unitに有効期限の単位を指定します。指定できる値は次のいずれかです。
1 = 週
2 = 月
3 = 年
既定の有効期限は 14 日です。 詳しくは、「 パブリケーションを作成」をご覧ください。
スナップショットまたはトランザクション パブリケーションのサブスクリプションに対して有効期限を変更するには
- パブリッシャーで sp_changepublicationを実行します。 @property に retention を、 @valueにサブスクリプションの新しい有効期限を時間単位で指定します。
マージ パブリケーションのサブスクリプションに対して有効期限を変更するには
パブリッシャーで sp_helpmergepublicationを実行します。引数には @publication と @publisherを指定します。 結果セットの retention_period_unit の値 (次のいずれか) を確認します。
0 = 日
1 = 週
2 = 月
3 = 年
パブリッシャーで sp_changemergepublicationを実行します。 @property に retention を指定します。また、 @valueには、手順 1. の保有期間の単位に基づいて、サブスクリプションの新しい有効期限をテキストで指定します。
(省略可) パブリッシャーで sp_changemergepublicationを実行します。 @property に retention_period_unit を、 @valueには、サブスクリプション有効期限に使用する新しい単位を指定します。