sp_filestream_force_garbage_collection(Transact-SQL)

FILESTREAM 가비지 수집기를 실행하고 불필요한 FILESTREAM 파일을 삭제합니다.

가비지 수집기를 사용하여 FILESTREAM 컨테이너 안의 삭제된 파일을 모두 정리해야 해당 컨테이너를 제거할 수 있습니다. FILESTREAM 가비지 수집기는 자동으로 실행됩니다. 그러나 가비지 수집기가 실행되기 전에 컨테이너를 제거해야 할 경우 sp_filestream_force_garbage_collection을 사용하여 가비지 수집기를 수동으로 실행할 수 있습니다.

구문

sp_filestream_force_garbage_collection [ @dbname = ]  'database_name'  , @filename = 'logical_file_name' ]

인수

  • @dbname = database_name**'**
    가비지 수집기를 실행할 데이터베이스 이름을 표시합니다.

    [!참고]

    dbname은 sysname입니다. 지정하지 않으면 현재 데이터베이스로 가정합니다.

  • @filename = logical_file_name
    가비지 수집기를 실행할 FILESTREAM 컨테이너의 논리적 이름을 지정합니다. @filename은 선택 사항입니다. 논리적 파일 이름을 지정하지 않으면 가비지 수집기가 지정한 데이터베이스의 FILESTREAM 컨테이너를 모두 정리합니다.

반환 코드 값

설명

0

작업 성공

1

작업 실패

결과 집합

설명

file_name

FILESTREAM 컨테이너 이름을 나타냅니다.

num_collected_items

이 컨테이너에서 가비지 수집된(삭제된) FILESTREAM 항목(파일/디렉터리) 수를 나타냅니다.

num_marked_for_collection_items

이 컨테이너에서 가비지 수집을 위해 표시된 FILESTREAM 항목(파일/디렉터리) 수를 나타냅니다. 이 항목은 아직 삭제되지 않았지만 다음 가비지 수집 단계에서 삭제할 수 있습니다.

num_unprocessed_items

이 FILESTREAM 컨테이너에서 가비지 수집을 위해 처리되지 적합한 FILESTREAM 항목(파일 또는 디렉터리) 수를 나타냅니다.

다음을 비롯하여 다양한 이유로 항목이 처리되지 않을 수 있습니다.

  • 로그 백업 또는 검사점을 가져오지 않아 파일이 고정되어야 하는 경우

  • FULL 또는 BULK_LOGGED 복구 모델의 파일인 경우

  • 장기 실행 활성 트랜잭션이 있는 경우

  • 복제 로그 판독기 작업이 실행되지 않은 경우. 자세한 내용은 SQL Server 2008의 FILESTREAM 저장소 백서를 참조하십시오.

last_collected_xact_seqno

지정한 FILESTREAM 컨테이너에 대해 파일이 가비지 수집된 마지막 해당 LSN(로그 시퀀스 번호)을 반환합니다.

주의

요청한 데이터베이스 및 FILESTREAM컨테이너에서 완료될 때까지 FILESTREAM 가비지 수집기 태스크를 명시적으로 실행합니다. 더 이상 필요하지 않은 파일은 가비지 수집 프로세스에서 제거됩니다. 이 작업을 완료하는 데 필요한 시간은 최근에 FILESTREAM 데이터에 발생한 DML 작업의 양과 해당 데이터베이스 또는 컨테이너에 있는 FILESTREAM 데이터의 크기에 따라 결정됩니다. 데이터베이스를 온라인 상태로 설정하여 이 작업을 실행할 수 있지만 그러면 가비지 수집 프로세스가 수행하는 여러 I/O 작업으로 인해 실행 중에 데이터베이스 성능이 저하될 수 있습니다.

[!참고]

평소 업무 시간 외에 꼭 필요할 때만 이 작업을 실행하는 것이 좋습니다.

별도의 컨테이너 또는 별도의 데이터베이스에서만 이 저장 프로시저의 여러 호출을 동시에 실행할 수 있습니다.

사용 권한

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

다음 예에서는 FSDB 데이터베이스의 FILESTREAM 컨테이너에 대해 가비지 수집기를 실행합니다.

1.컨테이너 지정 안 함

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB';

2.컨테이너 지정

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB' @filename = N'FSContainer';

참고 항목

관련 자료

SQL Server 2008의 FILESTREAM 저장소(FILESTREAM Storage in SQL Server 2008)