CHECKPOINT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 预览版中的 SQL 数据库

在您当前连接到的 SQL Server 数据库中生成一个手动检查点。

小窍门

有关不同类型的数据库检查点和检查点作的信息,请参阅数据库检查点(SQL Server)。

Transact-SQL 语法约定

Syntax

CHECKPOINT [ checkpoint_duration ]  

Arguments

checkpoint_duration

以秒为单位指定手动检查点完成所需的时间。

checkpoint_duration 选项是高级选项

如果指定 checkpoint_duration,则 SQL Server 数据库引擎 会在请求的持续时间内尝试执行检查点

checkpoint_duration 必须是一个数据类型为 int 的表达式,并且必须大于零

如果省略该参数,数据库引擎将调整检查点持续时间,以便最大程度地降低对数据库应用程序性能的影响。

影响检查点作持续时间的因素

通常,执行检查点操作所需的时间会随着该操作必须写入的脏页数的增加而增加。 默认情况下,为最大程度地降低对其他应用程序性能的影响,SQL Server 将调整检查点操作执行写入的频率。 降低写频率将增加完成检查点操作所需的时间。 SQL Server 将此策略用于手动检查点,除非命令中CHECKPOINT指定了checkpoint_duration值。

使用 checkpoint_duration 时对性能所造成的影响取决于脏页数、系统中的活动以及指定的实际持续时间

  • 例如,如果正常情况下完成检查点操作需要 120 秒,则将 checkpoint_duration 指定为 45 秒时,SQL Server 用于检查点的资源将比默认情况下分配的资源多

  • 反之,将 checkpoint_duration 指定为 180 秒时,将导致 SQL Server 分配的资源将比默认情况下分配的资源少

总之,checkpoint_duration 较短时,会增加用于检查点的资源,而 checkpoint_duration 较长时,会减少用于检查点的资源。 SQL Server 始终尽可能完成检查点,并且 CHECKPOINT 语句在检查点完成时立即返回。 因此,在某些情况下,检查点可以早于指定的持续时间完成,或者可能运行的时间长于指定的持续时间。

Permissions

CHECKPOINT 权限默认为 sysadmin 固定服务器角色的成员以及 db_ownerdb_backupoperator 固定数据库角色的成员,并且不可传输。