Dela via


sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Med den här lagrade proceduren kan du manuellt rensa sidotabellen (change_tracking_objectid) för en tabell i en databas som ändringsspårning är aktiverad för. Om parametern TableToClean inte skickas rensar den här processen alla sidotabeller för alla tabeller i databasen där ändringsspårning är aktiverat.

Transact-SQL syntaxkonventioner

Syntax

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

Argumentpunkter

[ @TableToClean = ] 'TableToClean'

Den ändringsspårningsaktiverade tabellen som ska rensas manuellt. Kvarvarande uppgifter lämnas för automatisk rensning genom ändringsspårning. Kan vara null för att rensa alla sidotabeller.

[ @DeletedRowCount = ] 'DeletedRowCount' OUTPUT

@DeletedRowCount är en OUTPUT-parameter av typen bigint. Den här parametern returnerar det totala antalet rader som rensades under processen.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Exempel

DECLARE @DeletedRowCount AS BIGINT;

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

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

Här är resultatet.

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

Anmärkningar

Den här proceduren måste köras i en databas som har aktiverat ändringsspårning.

När du kör den lagrade proceduren inträffar något av följande scenarier:

  • Om tabellen inte finns eller om ändringsspårning inte är aktiverat genereras lämpliga felmeddelanden.

  • Den här lagrade proceduren anropar en annan intern lagrad procedur som rensar innehållet från tabellen på sidan ändringsspårning som baseras på den ogiltiga rensningsversionen med hjälp av den sys.change_tracking_tables dynamiska hanteringsvyn. När den körs visas information om totalt antal rader som tagits bort (för varje 5 000 rader).

Den här lagrade proceduren är tillgänglig i följande produkter:

  • SQL Server 2016 (13.x) Service Pack 1 och senare versioner
  • Azure SQL Database och Azure SQL Managed Instance

Behörigheter

Endast en medlem av sysadmin-serverrollen eller db_owner databasroll kan utföra den här proceduren.