MSSQL 을 사용하다 유지관리계획의 작업을 삭제를 하려고 하면 아래와 같은 에러 메시지가 나온다.

 

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

 

 

아래 이미지와 같이 작업에서 DAY_BACKUP 작업관리를 삭제하려면 에레메시지가 발생된다.
원인은 sysmainplan_plans 테이블의 ID값과 해당 작업의 로그가 쌓이는 sysmaintplan_log의 ID값이 서로 다르기 때문에 발생한다.
그럼 이제 이럴경우 삭제하는 방법을 간단하게 알아보자.

 

 

 

 

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

 

 

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


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

1

2

use master

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

 

명령어를 입력하면  plan_id값이 출력된다 이제 이 값을 복사하자

 


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

1

2

3

4

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.이제 삭제에서 에러가 났던 부분을 삭제를 해보자 정상적으로 삭제가 된 것을 확인 할 수 있다.

 

 


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

 

+ Recent posts