반응형
사용자가 진행한 백업과 자동 백업한 백업 정보가 msdb..backupset 테이블에 저장이 되는데
동일한 db_id(database_name) 에 대한 여러 database_name 이 존재하여 발생하는 오류이다.
문제가 되는 백업 정보를 조회해보자.
-- backupset 정보 조회
SELECT DB_ID(database_name) AS dbid,
database_name,
backup_start_date
FROM msdb.dbo.backupset
WHERE type = 'D'
ORDER BY DB_ID(database_name), database_name, backup_start_date
아래와 같이 동일한 dbid 에 database_name 이 여러개 저장되어 있는 것을 볼 수 있다.
dbid 9 인 경우를 보자.
사용자가 진행한 백업의 database_name 은 OPEN_DB (실제 DB명) 으로 저장이 되고,
자동 백업의 database_name 은 02a4a03b-b502-4e... 와 같은 코드로 저장이 되어 문제가 된다.
이를 해결하기 위해 해당 DB 의 백업 내역을 삭제하여 백업 내역을 지워야한다.
-- //지정된 날짜보다 오래된 백업 세트를 삭제
EXEC msdb..sp_delete_backuphistory @oldest_date = 'yyyy-mm-dd'
-- // 해당 데이터베이스에 대한 모든 백업 및 복원 기록을 삭제
EXEC msdb..sp_delete_database_backuphistory @database_name = N'DB명'
방법은 두가지가 있다.
첫번째로,
EXEC msdb..sp_delete_backuphistory @oldset_date 를 통해 지정된 날짜보다 오래된 백업 세트를 삭제할 수 있다.
두번째로,
EXEC msdb..sp_delete_database_backuphistory @database_name 을 통해 DB 명을 지정하여 해당 DB 의 백업 세트를 모두 삭제할 수 있다.
모든 기록이 삭제되더라도 물리적 백업 파일은 보존되며,
백업 및 복원 시 해당 테이블에 백업 정보가 저장되므로 주기적으로 삭제를 진행해주는 것이 좋다.
반응형