Thursday, July 5, 2012

Orphaned messages in the tracking database - where do they come from?

My SQL Agent job Monitor BizTalk Server was failing with the error Orphaned DTA Service Instances in BizTalkDTAdb, that is my tracking database.
Successful execution of this job signals that you have none of the following issues (so you do want it to run J):
·         Messages without any references
·         Messages without reference counts
·         Messages with reference count less than 0
·         Message references without spool rows
·         Message references without instances
·         Instance state without instances
·         Instance subscriptions without corresponding instances
·         Orphaned DTA service instances
·         Orphaned DTA service instance exceptions
·         TDDS is not running on any host instance when global tracking option is enabled.
Looking into this error I’ve realized (via tests) that such orphaned messages in the tracking database are actually created in a number of situations, for instance when:
·         there is no subscribers to a message received on a WCF-NetTcp endpoint using the XMLReceive receive pipeline (using the file adapter will not produce an orphan)
·         the receive pipeline fails due to bad data (tested only for messages received on a WCF-NetTcp endpoint) 
This post on the BizTalk Administrator Blog discusses possible resolutions to this error: