sp_clean_db_free_space (Transact-SQL)

Si applica a:SQL Server

Rimuove le informazioni residui lasciate nelle pagine del database a causa di routine di modifica dei dati in SQL Server. sp_clean_db_free_space pulisce tutte le pagine in tutti i file del database.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

@dbname = 'database_name'
Nome del database da pulire. dbname è 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 è int con il valore predefinito 0.

Valori del codice restituito

0 (operazione completata) o 1 (operazione non riuscita)

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. Questi dati residui non vengono restituiti dal motore di database in risposta alle query. Tuttavia, in ambienti in cui la sicurezza fisica dei dati o dei file di backup è a rischio, è possibile usare sp_clean_db_free_space per pulire questi record fantasma. Per eseguire questa operazione per ogni file di database, usare sp_clean_db_file_free_space (Transact-SQL).

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 sp_clean_db_free_space può influire significativamente sull'attività di I/O, è consigliabile eseguire questa procedura al di fuori delle normali ore operative.

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

La stored procedure correlata sp_clean_db_file_free_space può pulire un singolo file.

Autorizzazioni

Richiede l'appartenenza al ruolo del db_owner database.

Esempi

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

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

Vedi anche

Stored procedure del motore di database (Transact-SQL)
Guida al processo di pulizia fantasma
sp_clean_db_file_free_space (Transact-SQL)