When looking a the new features of BizTalk 2010 I noticed that the set of SQL Server Agent jobs has been extended. There is new job called ‘Monitor BizTalk Server’.
This job is especially good news for those of us responsible for keeping BizTalk Server running and healthy.
The general idea behind the job is to check for errors and report that those errors exist in one of the message box databases, the management or the tracking database. A zombie message is an example of an error that will be detected. For a complete list of all the issues see the BizTalk 2010 help on this topic
The job consists of two steps. The first step is responsible for collecting error data from the different message box databases, the management database and the tracking database. The second step checks the collected data and raises an error if there is an issue in of the databases.
If any inconsistencies are found the job will fail and will write an error to the application event log. You can easily extend this by configuring other notifications for the job like e-mail, etc.
The job does not fix any issues it is just provides an alert mechanism. You can other tools like the BizTalk administration Console to fix any issues found.
When running the job on a healthy BizTalk server environment, the job succeeds:
Now I use the following non uniform sequential convoy orchestration to generate a zombie message:
I can easily do this by throwing in message 2 (destination receive shape 2) multiple times. The orchestration is only expecting one instance of message 2 which will lead to a zombie message. In the admin console this looks like this:
When running the job the second time I now see the following result:
The job history gives me more detailed information of what is wrong:
This information is also in the event log:
Some final considerations:
- By default the job is scheduled to run once a week. You can of course change this schedule if you like.
- This seems to be a heavy job in terms of SQL resource usage. Microsoft recommends to run the job during low traffic.
- The will not detect if issues have already been reported. When the job runs for the second time and the issues have not been fixed they will be reported again.
I think this is a useful new feature in BizTalk Server 2010. I have seen many clients where issues in the BizTalk databases where not noticed for a long time.