다음을 통해 공유


sp_clean_db_free_space(Transact-SQL)

적용 대상: SQL Server

SQL Server의 데이터 수정 루틴으로 인해 데이터베이스 페이지에 남아 있는 잔여 정보를 제거합니다. sp_clean_db_free_space 는 데이터베이스의 모든 파일에서 모든 페이지를 정리합니다.

Transact-SQL 구문 표기 규칙

구문

sp_clean_db_free_space
    [ @dbname = ] N'dbname'
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

인수

[ @dbname = ] N'dbname'

정리할 데이터베이스의 이름입니다. @dbname 기본값이 없는 sysname입니다.

[ @cleaning_delay = ] cleaning_delay

페이지 정리를 멈추고 대기할 시간 간격을 지정합니다. @cleaning_delay 기본값0인 int입니다. 이 지연은 I/O 시스템에 미치는 영향을 줄이는 데 도움이 됩니다.

반환 코드 값

0(성공) 또는 1(실패).

설명

테이블에서 삭제 작업을 수행하거나 업데이트 작업으로 행을 이동하면 행에 대한 참조를 제거하여 페이지에서 공간을 즉시 확보할 수 있습니다. 그러나 상황에 따라서는 행이 데이터 페이지에 물리적으로 남아 있어 삭제해야 할 레코드가 될 수 있습니다. 백그라운드 프로세스는 주기적으로 고스트 레코드를 제거합니다. 이 잔여 데이터는 쿼리에 대한 응답으로 데이터베이스 엔진 반환되지 않습니다. 그러나 데이터 또는 백업 파일의 물리적 보안이 위험한 환경에서는 이러한 고스트 레코드를 정리하는 데 사용할 sp_clean_db_free_space 수 있습니다. 데이터베이스 파일별로 이 작업을 수행하려면 sp_clean_db_file_free_space 사용합니다.

실행하는 sp_clean_db_free_space 데 필요한 시간은 파일의 크기, 사용 가능한 여유 공간 및 디스크 용량에 따라 달라집니다. 실행은 sp_clean_db_free_space I/O 작업에 큰 영향을 줄 수 있으므로 일반적인 작업 시간 외에 이 절차를 실행하는 것이 좋습니다.

실행 sp_clean_db_free_space하기 전에 전체 데이터베이스 백업을 만드는 것이 좋습니다.

관련 sp_clean_db_file_free_space 저장 프로시저는 단일 파일을 정리할 수 있습니다.

사용 권한

데이터베이스 역할의 db_owner 멤버 자격이 필요합니다.

예제

다음 예제에서는 데이터베이스의 모든 잔여 정보를 정리합니다 AdventureWorks2022 .

USE master;
GO

EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';