sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

此存储过程允许你手动清理启用了更改跟踪的数据库中的表(change_tracking_objectid) 的侧表。 如果未传递 TableToClean 参数,则此过程会清除启用了更改跟踪的数据库中所有表的所有侧表。

Transact-SQL 语法约定

语法

sys.sp_flush_CT_internal_table_on_demand
    [ @TableToClean = ] 'TableToClean'
    [ , [ @DeletedRowCount = ] DeletedRowCount OUTPUT ]
[ ; ]

参数

[ @TableToClean = ] 'TableToClean'

要手动清理已启用更改跟踪的表。 积压工作留给更改跟踪自动清理。 可为 null 以清理所有侧表。

[ @DeletedRowCount = ] 'DeletedRowCount 的输出

@DeletedRowCount是 bigint 类型的 OUTPUT 参数。 此参数返回在此过程中清理的行总数。

返回代码值

0(成功)或 1(失败)。

示例

DECLARE @DeletedRowCount BIGINT;

EXEC sys.sp_flush_CT_internal_table_on_demand '[Sales].[Orders]',
    @DeletedRowCount = @DeletedRowCount OUTPUT;

PRINT CONCAT('Number of rows deleted: ', @DeletedRowCount);
GO

结果集如下。

Started executing query at Line 1
Cleanup Watermark = 17
Internal Change Tracking table name : change_tracking_1541580530
Total rows deleted: 0.
Number of rows deleted: 0
Total execution time: 00:00:02.949

注解

此过程必须在启用了更改跟踪的数据库中运行。

运行存储过程时,会发生以下情况之一:

  • 如果表不存在或未启用更改跟踪,则会引发相应的错误消息。

  • 此存储过程调用另一个内部存储过程,该存储过程使用 sys.change_tracking_tables 动态管理视图从基于无效清理版本的更改跟踪端表清理内容。 运行时,会显示删除的总行数的信息(每 5000 行)。

以下产品中提供了此存储过程:

  • SQL Server 2016 (13.x) Service Pack 1 及更高版本
  • Azure SQL 数据库和 Azure SQL 托管实例

权限

只有 sysadmin 服务器角色或db_owner数据库角色的成员才能执行此过程。