sp_clean_db_free_space (Transact-SQL)
Se aplica a: SQL Server
Quita la información residual que queda en las páginas de base de datos debido a rutinas de modificación de datos en SQL Server. sp_clean_db_free_space
limpia todas las páginas de todos los archivos de la base de datos.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_clean_db_free_space
[ @dbname = ] N'dbname'
[ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]
Argumentos
[ @dbname = ] N'dbname'
Nombre de la base de datos que se va a limpiar. @dbname es sysname, sin ningún valor predeterminado.
[ @cleaning_delay = ] cleaning_delay
Especifica un intervalo de retardo entre la limpieza de páginas. @cleaning_delay es int, con un valor predeterminado de 0
. Este retraso ayuda a reducir el efecto en el sistema de E/S.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
Las operaciones de eliminación de una tabla o de actualización que hacen que una fila se mueva puede liberar espacio inmediatamente en una página quitando las referencias a la fila. Sin embargo, en determinadas circunstancias, la fila puede permanecer físicamente en la página de datos como un registro fantasma. Un proceso en segundo plano quita periódicamente los registros fantasma. El Motor de base de datos no devuelve estos datos residuales en respuesta a las consultas. Sin embargo, en entornos en los que la seguridad física de los archivos de datos o copia de seguridad está en riesgo, puede usar sp_clean_db_free_space
para limpiar estos registros fantasma. Para realizar esta operación por archivo de base de datos, use sp_clean_db_file_free_space.
El tiempo necesario para ejecutarse sp_clean_db_free_space
depende del tamaño del archivo, del espacio libre disponible y de la capacidad del disco. Dado que la ejecución sp_clean_db_free_space
puede afectar significativamente a la actividad de E/S, se recomienda ejecutar este procedimiento fuera del horario de operación habitual.
Antes de ejecutar sp_clean_db_free_space
, se recomienda crear una copia de seguridad completa de la base de datos.
El procedimiento almacenado sp_clean_db_file_free_space relacionado puede limpiar un único archivo.
Permisos
Requiere la pertenencia al db_owner
rol de base de datos.
Ejemplos
En el ejemplo siguiente se limpia toda la información residual de la base de datos AdventureWorks2022
.
USE master;
GO
EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';