Partage via


sp_clean_db_file_free_space (Transact-SQL)

S’applique à : SQL Server

Supprime les informations résiduelles laissées sur les pages de base de données en raison de routines de modification des données dans SQL Server. sp_clean_db_file_free_space nettoie toutes les pages d’un seul fichier d’une base de données.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @dbname = ] N’dbname'

Nom de la base de données à nettoyer. @dbname est sysname, sans valeur par défaut.

[ @fileid = ] fileid

ID du fichier de données à nettoyer. @fileid est int, sans valeur par défaut.

[ @cleaning_delay = ] cleaning_delay

Spécifie un intervalle entre le nettoyage des pages. @cleaning_delay est int, avec la valeur par défaut 0. Ce délai permet de réduire l’effet sur le système d’E/S.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Notes

Les opérations de suppression d'une table ou les opérations de mise à jour qui entraînent le déplacement d'une ligne peuvent libérer immédiatement de l'espace sur une page en supprimant les références à cette ligne. Cependant, dans certains cas, la ligne peut physiquement être conservée sur la page de données sous la forme d'un enregistrement fantôme. Un processus en arrière-plan supprime régulièrement les enregistrements fantômes. Ces données résiduelles ne sont pas retournées par le Moteur de base de données en réponse aux requêtes. Toutefois, dans les environnements dans lesquels la sécurité physique des fichiers de données ou de sauvegarde est en danger, vous pouvez utiliser sp_clean_db_file_free_space pour nettoyer ces enregistrements fantômes. Pour effectuer cette opération pour tous les fichiers de base de données à la fois, utilisez sp_clean_db_free_space.

La durée d’exécution sp_clean_db_file_free_space dépend de la taille du fichier, de l’espace libre disponible et de la capacité du disque. Étant donné que l’exécution sp_clean_db_file_free_space peut affecter considérablement l’activité d’E/S, nous vous recommandons d’exécuter cette procédure en dehors des heures d’opération habituelles.

Avant d’exécuter sp_clean_db_file_free_space, nous vous recommandons de créer une sauvegarde complète de base de données.

La procédure stockée associée sp_clean_db_free_space nettoie tous les fichiers de la base de données.

autorisations

Nécessite l’appartenance au rôle de base de données db_owner .

Exemples

L'exemple suivant nettoie toutes les informations résiduelles du fichier de données principal de la base de données AdventureWorks2022.

USE master;
GO

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