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 relative alla sintassi Transact-SQL
Sintassi
sp_clean_db_free_space
[ @dbname = ] N'dbname'
[ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]
Argomenti
[ @dbname = ] N'dbname'
Nome del database da pulire. @dbname è sysname, senza impostazione predefinita.
[ @cleaning_delay = ] cleaning_delay
Specifica un intervallo di ritardo tra le pulizie delle pagine @cleaning_delay è int, con il valore predefinito 0
. Questo ritardo consente di ridurre l'effetto sul sistema di I/O.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
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. Un processo in background rimuove periodicamente i record fantasma. 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.
Il tempo necessario per l'esecuzione sp_clean_db_free_space
dipende dalle dimensioni del file, dallo spazio 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';