제목 그대로 SQL Server 2005에서 다른 서버의 MSDB를 새로운 머신으로
복구할 경우에 AGENT의 JOB이 제대로 수행되지 않는 문제가 발생할 수 있습니다.
이때 AGENT JOB의 오류 로그를 보면 아래와 같은 오류가 발생하는 것을 확인 할 수 있습니다.
2009-10-22 16:46:23 - ! [125] Subsystem 'ActiveScripting' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'CmdExec' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'Snapshot' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'LogReader' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'Distribution' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'Merge' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'QueueReader' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'ANALYSISQUERY' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'ANALYSISCOMMAND' could not be loaded (reason: The specified module could not be found)
2009-10-22 16:46:23 - ! [125] Subsystem 'SSIS' could not be loaded (reason: The specified module could not be found)
문제의 원인은 AGENT에서 사용하는 DLL파일의 경로를 msdb.dbo.syssubsystems에 저장하고 있으며,
다른 서버로 이전되면서 SQL이 설치된 경로가 변경되는 경우에는 DLL의 위치를 확인 할 수 없어
오류가 발생하게 됩니다. 이때 UPDATE를 통해서 경로를 변경해서 처리 할 수도 있으며 아래와 같이
시스템 SP를 사용 할 수 도 있습니다.
use msdb
go
delete from msdb.dbo.syssubsystems
exec msdb.dbo.sp_verify_subsystems 1
go
SQL Server 에이전트 재시작.
자세한 내용은 아래 KB를 참고 하시길 바랍니다.
msdb 데이터베이스 또는 SQL Server 2005의 syssubsystems 테이블을 변경할 때 복원하거나 때 오류 메시지: "하위 시스템 % 로드할 수 없습니다."
http://support.microsoft.com/kb/914171
송 혁, SQL Server MVP
sqler.pe.kr // sqlleader.com
hyoksong.tistory.com