Condividi tramite


sp_clean_db_file_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_file_free_space pulisce tutte le pagine in un solo file di un database.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_clean_db_file_free_space
    [ @dbname = ] N'dbname'
    , [ @fileid = ] fileid
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

Argomenti

[ @dbname = ] N'dbname'

Nome del database da pulire. @dbname è sysname, senza impostazione predefinita.

[ @fileid = ] fileid

ID del file di dati da pulire. @fileid è int, 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_file_free_space per pulire questi record fantasma. Per eseguire questa operazione per tutti i file di database contemporaneamente, usare sp_clean_db_free_space.

Il tempo necessario per l'esecuzione sp_clean_db_file_free_space dipende dalle dimensioni del file, dallo spazio disponibile e dalla capacità del disco. Poiché l'esecuzione sp_clean_db_file_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_file_free_space, è consigliabile creare un backup completo del database.

La stored procedure correlata sp_clean_db_free_space pulisce tutti i file nel database.

Autorizzazioni

Richiede l'appartenenza al ruolo del database db_owner .

Esempi

Nell'esempio seguente vengono eliminate le informazioni residue dal file di dati primario del database AdventureWorks2022.

USE master;
GO

EXEC sp_clean_db_file_free_space
    @dbname = N'AdventureWorks2022',
    @fileid = 1;