Freigeben über


sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Mit dieser gespeicherten Prozedur können Sie die seitliche Tabelle (change_tracking_objectid) für eine Tabelle in einer Datenbank manuell bereinigen, für die die Änderungsnachverfolgung aktiviert ist. Wenn der Parameter TableToClean nicht übergeben wird, bereinigt dieser Vorgang alle Seitentabellen für alle Tabellen in der Datenbank, in denen die Änderungsnachverfolgung aktiviert ist.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @TableToClean = ] 'TableToClean'

Die tabelle mit aktivierter Änderungsnachverfolgung, die manuell bereinigt werden soll. Die Backlogs bleiben für die automatische Bereinigung durch Änderungsnachverfolgung erhalten. Kann NULL sein, um alle Seitentabellen zu bereinigen.

[ @DeletedRowCount = ] 'Output von DeletedRowCount

@DeletedRowCount ist ein OUTPUT-Parameter vom Typ bigint. Dieser Parameter gibt die Gesamtanzahl der Zeilen zurück, die während des Prozesses bereinigt wurden.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Beispiele

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

Hier sehen Sie das Ergebnis.

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

Hinweise

Dieses Verfahren muss in einer Datenbank ausgeführt werden, in der die Änderungsnachverfolgung aktiviert ist.

Wenn Sie die gespeicherte Prozedur ausführen, geschieht eines der folgenden Szenarien:

  • Wenn die Tabelle nicht vorhanden ist oder die Änderungsnachverfolgung nicht aktiviert ist, werden entsprechende Fehlermeldungen ausgelöst.

  • Diese gespeicherte Prozedur ruft eine weitere interne gespeicherte Prozedur auf, die Inhalte aus der Änderungsnachverfolgungsseite bereinigt, die auf der ungültigen Bereinigungsversion basiert, mithilfe der sys.change_tracking_tables dynamischen Verwaltungsansicht. Wenn sie ausgeführt wird, werden die Informationen der gelöschten Gesamtzeilen angezeigt (für alle 5000 Zeilen).

Diese gespeicherte Prozedur ist in den folgenden Produkten verfügbar:

  • SQL Server 2016 (13.x) Service Pack 1 und höhere Versionen
  • Azure SQL-Datenbank und Azure SQL Managed Instance

Berechtigungen

Nur ein Mitglied der Sysadmin-Serverrolle oder db_owner Datenbankrolle kann dieses Verfahren ausführen.