BizTalkDTADb가 몇십 기가바이트까지 올라가다 결구 Disk Full이 나면서 시스템이 다운되버렸죠!
왜 이런 Procedure를 기본적으로 Agent에 설정하지 않았는가! 해서 결국 나중에 Service Pack이 나오면서 Agent에 추가 되었습니다.
하지만 이미 커져버린 DB에 대해서는 삭제하는 Hotfix까지 나오게 되었습니다.
핫픽스 다운로드: http://support.microsoft.com/kb/894253/
BizTalk Server 2006부터는 기본적으로 Procedure를 가지고 있으면 Agent에 자동으로 추가됩니다. 하지만! Disable상태이기 때문에 정책에 맞추어서 세팅을 해주어야만 합니다. (반드시! 반드시! 해주어야 합니다.)
프로젝트를 하다보면 의외로 많은 문제를 발생하는 부분중 하나이기 때문에 처음 설치시 구성하는 방법과 문제가 발생하였을때 MessageBox 와 Tracking DB를 비우는 방법에 대해서 알려드리도록 하겠습니다.
1. BizTalk Server 2006 or 2006 R2 설치 후 구성
SQL Server Agent에서 확인하시면 "DTA Purge and Archive" 라는 작업을 확인 할 수 있습니다. 기본적으로는 Disable상태이면 절차를 수정 후 Enable상태로 변경하시면 됩니다.
(1) Archive and Purge


exec dtasp_BackupAndPurgeTrackingDatabase
0, -- @nLiveHours
1, --@nLiveDays
30, --@nHardDeleteDays
'c:\DTAPurgeandArchive', --@nHardDeleteDays
null, --@nvcFolder
null, --@nvcValidatingServer
0 --@fForceBackup Soft purge process
–@nLiveHour+ @nLiveDays : 합계 보다 오래되고 실행 완료된 자료는 삭제 하며 이전 자료는 보관
–@nHardDeleteDays : 일자 기준으로 오래된 자료는 실행 완료와 상관 없이 삭제
–@nvcFolder : backup파일을 위한 폴더 정의
–@nvcValidatingServer : 유효성 검사 서버, null은 유효성 검사를 하지 않겠다는 의미
–@fForceBackup Soft purge process : 현재 미 사용
–1일이 지난 실행 완료된 추적 자료는 삭제하며, 30일이 지난 경우 종료 여부와 상관없이 모든 추적 자료는 삭제하며, backup폴더는 c:\DTAPrugeandArchive’이고, validation은 사용하지 않음
exec dtasp_BackupAndPurgeTrackingDatabase
0, --@nLiveHours
1, --@nLiveDays
30, --@nHardDeleteDays
‘c:\DTAPurgeandArchive’, --@nvcFolder
null, --@nvcValidatingServer
0 --@fForceBackup Soft purge process

** 백업파일을 남길 필요가 없다면 dtasp_BackupAndPurgeTrackingDatabase안에 보시면 PurgeTrackingDatabase 라는 프로시져를 사용하시면 됩니다.

사이트에서 백업 유지에 대한 정책이 따로 없고 자체 백업을 할때 이걸로 많이 사용합니다.
declare @dtLastBackup datetime set @dtLastBackup = GetUTCDate()
exec dtasp_PurgeTrackingDatabase 1, 0, 1, @dtLastBackup
** 위의 값은 예시일뿐입니다. 특히 경로 부분은 반드시 로컬이 아닌 별도의 머신이나 장치를 권장합니다.
2. MessageBox and Tracking DB Clean up!
Agent동작이 정상적이지 못하였다던가..구성을하지 못하였을때.. 또는 삭제되지 않는 메시지가 발생하였을때.. 데이터베이스를 비우고 싶은 욕망에 사로잡히게 됩니다.
이런 경우를 위해서 BizTalk Server 2006부터는 기본적으로 쿼리를 제공하고 있습니다.
bts_CleanupMsgbox, bts_PurgeSubscriptions 프로시져를 호출하면 되며 생성되지 않은 경우에는
쿼리가 없다면 여기서 받으시면 됩니다
(1) BizTalk Service 중지
(2) 웹 서비스를 사용한다면 IIS Reset
(3) "bts_CleanupMsgbox" 프로시져를 MsgBoxDb에서 실행 (인스터스를 deletion으로 표시하는 역할이지 실제 삭제 작업을 수행하지는 않음)
(4) "bts_PurgeSubscriptions" 프로시져를 MsgBoxDb에서 실행 (deletion표시가 된 모든 메시지를 삭제한다.)
(5) BizTalk Service 시작
(1) BizTalk Service 중지
(2) "dtasp_CleanHMData" BizTalkDTADb에서 실행
(3) BizTalk Service 시작
이런 기능들을 잘 이용한다면 BizTalk Server를 유지하는데 큰 도움이 될것입니다.