分享方式:


sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)

適用於:SQL ServerAzure 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' OUTPUT

@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 Database 與 Azure SQL 受控執行個體

權限

只有系統管理員伺服器角色或db_owner資料庫角色的成員才能執行此程式。