IReplicaMetadata::CleanupDeletedItems
삭제된 것으로 표시되었으며 마지막 정리 성공 시간보다 오래된 항목을 제거합니다.
HRESULT CleanupDeletedItems(
ULONGLONG ulTimeIntervalInMilliseconds);
매개 변수
- ulTimeIntervalInMilliseconds
[in] 삭제된 항목을 메타데이터 저장소에서 보관할 최소 기간입니다. 이 값이 0이면 삭제된 항목은 모두 즉시 정리됩니다.
반환 값
S_OK
정리 작업이 수행되지 않으면 S_FALSE입니다.
E_OUTOFMEMORY
명시적 트랜잭션이 열리지 않은 경우 SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED입니다.
잘못된 작업이 발생하면 SYNC_E_INVALID_OPERATION입니다.
주의
이 메서드는 공급자가 정해진 일정에 따라 삭제된 항목을 정리할 수 있도록 도와 줍니다. ulTimeIntervalInMilliseconds에 지정된 시간 간격은 삭제된 항목을 메타데이터 저장소에 보관하는 최소 기간입니다. ulTimeIntervalInMilliseconds 시간이 경과된 경우에만 삭제된 항목을 정리하기 때문에 공급자가 변경 내용 검색을 수행할 때마다 정기적으로 CleanupDeletedItems를 호출하는 등의 방법을 사용할 수 있습니다. CleanupDeletedItems를 수행하면 ulTimeIntervalInMilliseconds 동안 삭제된 것으로 표시된 삭제된 항목을 항상 보관할 수 있으므로 공급자는 비용이 많이 드는 전체 열거 작업을 수행하지 않아도 됩니다.
CleanupDeletedItems가 처음 호출되면 현재 시간이 마지막 정리 성공 시간으로 저장되고 다른 동작은 수행되지 않습니다.
이후에 CleanupDeletedItems를 호출할 때마다 다음 단계가 수행됩니다.
마지막 정리 성공 시간과 현재 시간을 비교합니다. 경과된 시간이 ulTimeIntervalInMilliseconds보다 작으면 아무 동작도 수행되지 않고 S_FALSE가 반환됩니다.
마지막 정리 성공 시간보다 오래된 삭제된 항목을 모두 제거합니다.
현재 시간을 마지막 정리 성공 시간으로 저장합니다.
삭제된 항목이 제거된 사실을 반영하도록 잊어버린 정보를 업데이트합니다.
CleanupDeletedItems는 마지막 정리 성공 시간 이전에 삭제된 것으로 표시된 항목만 정리하며 마지막 정리 성공 시간 이후에 삭제된 것으로 표시된 항목은 정리하지 않습니다. 예를 들어 CleanupDeletedItems가 성공적으로 항목을 정리하고 현재 시간을 저장했다고 가정합니다. 24일 후 ulTimeIntervalInMilliseconds를 20일로 지정하여 CleanupDeletedItems를 다시 호출하면 CleanupDeletedItems는 마지막으로 정리에 성공한 24일 전보다 오래된 삭제된 항목만 제거합니다. 22일 전 등과 같이 24일 전과 20일 전 사이에 삭제된 것으로 표시된 항목은 제거되지 않습니다. 삭제된 지 20일이 되지 않은 항목도 제거되지 않습니다.
참고
ulTimeIntervalInMilliseconds의 값을 0으로 지정하면 메타데이터 저장소의 삭제된 항목이 모두 제거됩니다. 이 작업은 공급자가 동기화 커뮤니티의 다른 모든 복제본이 서로 동기화되었다고 확신하는 경우에만 수행되어야 합니다. 이는 삭제된 항목을 모두 제거할 경우 Sync Framework에서 전체 열거 작업을 수행할 수 있기 때문입니다.