设置订阅的过期期限

适用于:SQL ServerAzure SQL 托管实例

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中设置订阅的过期期限。 订阅的过期期限决定了订阅在经过多长时间后过期并被删除。 有关详细信息,请参阅 Subscription Expiration and Deactivation

本主题内容

开始之前

建议

  • 订阅过期期限也称为“发布保持期” 。 合并复制元数据的清除依赖于此设置:

    • 在到达保持期之前,复制无法清除发布数据库和订阅数据库中的元数据。 在为保持期指定较大值时务必谨慎,因为这可能对复制性能产生负面影响。 如果能很有把握地预测出所有订阅服务器都将在该时间段内定期同步,则建议使用较低的设置。

      合并发布的保持期具有 24 小时的宽限期,以适应处于不同时区中的订阅服务器。 例如,如果将保持期设置为 1 天,则实际的保持期为 48 小时。

    • 可以指定订阅永不过期,但是强烈建议您不要使用此值,因为这样将无法清除元数据。

使用 SQL Server Management Studio

在“发布属性 - <发布>”对话框的“常规”页上设置订阅的过期期限。 有关访问此对话框的详细信息,请参阅 View and Modify Publication Properties

设置订阅的过期期限

  1. 在“发布属性 - <发布>”对话框的“常规”页上的“订阅过期”部分中,指定订阅是否应过期。

  2. 如果它们应该过期,请指定一个过期时间段。

“使用 Transact-SQL”

您可以使用复制存储过程在创建发布时设置此值或以后修改此值。

为快照或事务发布设置订阅过期时间

  1. 在发布服务器上,执行 sp_addpublication。 以小时为单位为 @retention指定所需的订阅过期时间。 默认的过期时间为 336 个小时。 有关详细信息,请参阅 Create a Publication

为合并发布设置订阅过期时间

  1. 在发布服务器上,执行 sp_addmergepublication。 为 @retention指定所需的订阅过期时间值。 为 @retention_period_unit指定此过期时间的表示单位,此单位可以是以下单位之一:

    • 1 = 周

    • 2 = 月

    • 3 = 年

    默认的过期时间为 14 天。 有关详细信息,请参阅 Create a Publication

更改快照或事务发布的订阅过期时间

  1. 在发布服务器上,执行 sp_changepublication。 为 @property 指定 retention ,并以小时为单位为 @value指定新的订阅过期时间。

更改合并发布的订阅过期时间

  1. 在发布服务器上,执行 sp_helpmergepublication,并指定 @publication@publisher。 记下结果集中的 retention_period_unit 值,此值可能为以下值之一:

    • 0 = 天

    • 1 = 周

    • 2 = 月

    • 3 = 年

  2. 在发布服务器上,执行 sp_changemergepublication。 为 @property 指定 retention ,并以步骤 1 中的保持期单位为 @value指定新的订阅过期时间。

  3. (可选)在发布服务器上,执行 sp_changemergepublication。 为 @property 指定 retention_period_unit ,并为 @value指定新的订阅过期时间单位。

另请参阅

Replication System Stored Procedures Concepts
订阅过期和停用