sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
此存储过程允许你手动清理启用了更改跟踪的数据库中的表(change_tracking_objectid
) 的侧表。 如果未传递 TableToClean 参数,则此过程会清除启用了更改跟踪的数据库中所有表的所有侧表。
语法
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数据库角色的成员才能执行此过程。