sp_clean_db_free_space (Transact-SQL)

Rimuove le informazioni residue presenti nel database dopo l'esecuzione delle routine di modifica dei dati in SQL Server. sp_clean_db_free_space esegue la pulizia di tutte le pagine in tutti i file del database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_clean_db_free_space 
[ @dbname ] = 'database_name' 
[ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]

Argomenti

  • [ @dbname = ] 'database_name'
    Nome del database su cui eseguire la pulizia. dbname è di tipo sysname e non può essere NULL.

  • [ @cleaning\_delay = ] 'delay_in_seconds'
    Specifica un intervallo di ritardo tra le pulizie delle pagine per ridurre l'impatto sul sistema di I/O. delay_in_seconds è di tipo int e il valore predefinito è 0.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Le operazioni di aggiornamento o le operazioni di eliminazione da una tabella che provocano lo spostamento di una riga consentono di liberare immediatamente spazio in una pagina poiché rimuovono i riferimenti alla riga specifica. In alcune circostanze, tuttavia, la riga può rimanere fisicamente nella pagina di dati come record fantasma. I record fantasma vengono rimossi periodicamente da un processo in background. Tali dati residui non vengono restituiti dal Motore di database in risposta alle query. In ambienti in cui la protezione fisica dei file di dati o di backup non sia sufficiente, è tuttavia possibile utilizzare sp_clean_db_free_space per eliminare tali record fantasma.

La quantità di tempo necessaria per eseguire sp_clean_db_free_space dipende dalle dimensioni del file, dallo spazio libero disponibile e dalla capacità del disco. Poiché l'esecuzione di sp_clean_db_free_space può influire in modo significativo sulle attività di I/O, è consigliabile eseguire questa procedura in orario diverso da quello lavorativo.

Prima di eseguire sp_clean_db_free_space, è opportuno creare un backup completo del database.

La stored procedure sp_clean_db_file_free_space correlata può eseguire la pulizia di un unico file.

Autorizzazioni

È richiesta l'appartenenza al ruolo del database db_owner.

Esempi

Nell'esempio seguente vengono eliminate tutte le informazioni residue dal database AdventureWorks.

USE master
GO
EXEC sp_clean_db_free_space 
@dbname = N'AdventureWorks' ;