Freigeben über


sp_clean_db_file_free_space (Transact-SQL)

Entfernt Restinformationen, die aufgrund von Datenänderungsroutinen in SQL Server auf Datenbankseiten verblieben sind. Mit sp_clean_db_file_free_space werden alle Seiten in einer einzigen Datei einer Datenbank bereinigt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_clean_db_file_free_space 
[ @dbname ] = 'database_name' 
, @fileid = 'file_number' 
 [ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]

Argumente

  • [ @dbname = ] 'database_name'
    Der Name der zu bereinigenden Datenbank. dbname ist vom Datentyp sysname und darf nicht NULL sein.

  • [ @fileid = ] 'file_number'
    Die ID der zu bereinigenden Datendatei. file_number ist vom Datentyp int und darf nicht NULL sein.

  • [ @cleaning_delay = ] 'delay_in_seconds'
    Gibt das Intervall zwischen dem Bereinigen von Seiten an. Hierdurch werden die Auswirkungen auf das E/A-System verringert. delay_in_seconds ist vom Datentyp int. Der Standardwert ist 0.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

Durch Löschvorgänge für eine Tabelle oder Aktualisierungsvorgänge, die zum Verschieben einer Zeile führen, kann sofort Speicherplatz für eine Seite freigegeben werden, indem Verweise auf die Zeile entfernt werden. Unter bestimmten Umständen kann die Zeile jedoch als inaktiver Datensatz (ghost record) weiter physisch auf der Datenseite vorhanden sein. Inaktive Datensätze werden regelmäßig durch einen im Hintergrund ausgeführten Prozess entfernt. Die Restdaten werden von Database Engine (Datenbankmodul) nicht in Antworten auf Abfragen zurückgegeben. In Umgebungen, in denen die physische Sicherheit der Daten- oder Sicherungsdateien gefährdet ist, können Sie jedoch die inaktiven Datensätze mithilfe von sp_clean_db_file_free_space löschen.

Die zum Ausführen von sp_clean_db_file_free_space erforderliche Dauer hängt von der Größe der Datei, dem freien Speicherplatz und der Kapazität des Datenträgers ab. Weil sich das Ausführen von sp_clean_db_file_free_space erheblich auf die E/A-Aktivität auswirken kann, sollten Sie diese Prozedur außerhalb der normalen Betriebszeit ausführen.

Vor dem Ausführen von sp_clean_db_file_free_space sollten Sie eine vollständige Datenbanksicherung durchführen.

Mit der verwandten gespeicherten Prozedur sp_clean_db_free_space werden alle Dateien in der Datenbank bereinigt.

Berechtigungen

Erfordert die Mitgliedschaft in der Datenbankrolle db_owner.

Beispiel

Im folgenden Beispiel werden alle Restinformationen aus der primären Datendatei der AdventureWorks2008R2-Datenbank gelöscht.

USE Master
GO
EXEC sp_clean_db_file_free_space 
@dbname = N'AdventureWorks2008R2', @fileid = 1 ;