SQL Server 유지 관리 계획 작업 삭제 시 REFERENCE 제약 조건 충돌 에러 해결 방법

SQL Server Management Studio 을 사용하다 유지 관리 계획의 작업을 삭제를 하려고 하면 아래와 같은 에러 메시지가 나옵니다

DELETE 문이 REFERENCE 제약 조건 “FK_subplan_job_id”과(와) 충돌했습니다. 데이터베이스 “msdb”, 테이블 “dbo.sysmaintplan_subplans”, column ‘job_id’에서 충돌이 발생했습니다.
문이 종료되었습니다. (Microsoft SQL Server, 오류: 547)

도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.00.5026&EvtSrc=MSSQLServer&EvtID=547&LinkId=20476

해당 작업에 연결된 유지보수 계획이 먼저 삭제되어야 하는데, 이 과정에서 “dbo.sysmaintplan_subplans” 테이블에서 “job_id” 열과 “sysmaintplan_plans” 테이블에서 “id” 열 사이에 존재하는 참조 관계(FK_subplan_job_id) 때문에 오류가 발생하는 것으로 보입니다.

이 오류를 해결하는 방법 중 하나는 다음과 같습니다.

  1. “sysmaintplan_log” 테이블에서 해당 작업에 대한 로그 데이터를 모두 삭제합니다.
  2. “sysmaintplan_subplans” 테이블에서 해당 작업에 대한 유지보수 계획 서브 계획 데이터를 삭제합니다.
  3. “sysmaintplan_plans” 테이블에서 해당 작업에 대한 유지보수 계획 데이터를 삭제합니다.
  4. 작업을 삭제합니다.

자세한 설명은 다음과 같습니다.

1. 먼저 삭제할 작업의  목록을 선택 후 작업 스크립팅 -> DROP -> 새쿼리 편집기 창을 클릭합니다.

    2. 쿼리 실행창이 나타나며 job_ip가 확인된다 이 job_id를 복사를 합니다.

    3. 새 쿼리 창을 뛰어서 아래와 같이 명령어를 입력합니다.

    use master
    select * from msdb.dbo.sysmaintplan_subplans where job_id='19c04eaf-2ec4-47fe-816c-0ba0d23874d88'

    명령어를 입력하면  plan_id값이 출력합니다. 이제 이 값을 복사합니다.

    4. 위에서 확인된 plan_id값을 복사하였으며 아래와 같이 delete  쿼리문으로 삭제를 해줍니다.

    use master
    delete from msdb.dbo.sysmaintplan_log where plan_id='8759DB1-A425-47F8-94C3-0B0DCF177277'
    
    delete from msdb.dbo.sysmaintplan_subplans where plan_id='8759DB1-A425-47F8-94C3-0B0DCF177277'

    5. 이제 삭제에서 에러가 났던 부분을 삭제를 해봅니다. 정상적으로 삭제가 된 것을 확인 할 수 있습니다.

    모두 정상적으로 삭제가 완료된 상태


    날짜:

    카테고리: