更改数据库的目标恢复时间 (SQL Server)

适用于:SQL Server

本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中设置或更改数据库的目标恢复时间。 默认情况下,目标恢复时间是 60 秒,而且数据库使用间接检查点。 目标恢复时间为此数据库建立恢复时间上限。

此设置立即生效,不需要重启 SQL Server。

注意

如果长时间运行的事务导致过多 UNDO 时间,则可能超过给定数据库的目标恢复时间设置为该数据库指定的上限。

限制和局限

间接检查点配置的数据库上的联机事务工作负载可能会导致性能下降。 间接检查点确保损坏页的数量低于特定阙值,以便在目标恢复时间内完成数据库恢复。 与利用脏页数量的间接检查点相反,“恢复间隔”配置选项使用事务数量来确定恢复时间。

如果在接收大量 DML 操作的数据库上启用了间接检查点,则后台编写器可开始主动将脏缓冲区刷新到磁盘上,确保执行恢复所需的时间位于数据库上设置的目标恢复时间范围内。 这可能造成某些系统上出现额外的 I/O 活动,如果磁盘子系统在 I/O 阙值之上或附近运行,则这会导致性能瓶颈。

权限

需要对数据库拥有 ALTER 权限。

使用 SQL Server Management Studio

  1. 在“对象资源管理器”中,连接到一个 SQL Server 数据库引擎实例,并展开该实例

  2. 展开“数据库”容器,右键单击要更改的数据库,然后选择“属性”命令。

  3. 在“数据库属性”对话框中,选择“选项”页

  4. 在“恢复”面板的“目标恢复时间(秒)”字段中,指定要作为此数据库恢复时间上限的秒数

使用 Transact-SQL

  1. 连接到数据库所在的 SQL Server 实例。

  2. 按如下所示使用以下 ALTER DATABASE 语句:

    TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

    target_recovery_time
    从 SQL Server 2016 (13.x) 开始,默认值为 1 分钟。 大于 0(较旧版本的默认值)时,指定在发生崩溃的情况下指定数据库的恢复时间上限。

    SECONDS
    指示 target_recovery_time 表示为秒数。

    MINUTES
    指示 target_recovery_time 表示为分钟数。

    以下示例将 AdventureWorks2022 数据库的目标恢复时间设置为 60 秒。

    ALTER DATABASE AdventureWorks2022 SET TARGET_RECOVERY_TIME = 60 SECONDS;
    

另请参阅