Capturing BizTalk 2004 SQLAdapter failures
- by DanBedassa
I was recently working on a BizTalk 2004 project where I encountered an issue with capturing exceptions (inside my orchestration) occurring from an external source. Like database server down, non-existing stored procedure, …
I thought I might write-up this in case it might help someone …
To reproduce an issue, I just rename the database to something different.
The orchestration was failing at the point where I make a SQL request via a Response-Request Port. The exception handlers were bypassed but I can see a warning in the event log saying:
"The adapter failed to transmit message going to send port "
After scratching my head for a while (as a newbie to BTS 2004) to find a way to catch the exceptions from the SQLAdapter in an orchestration, here is the solution I had.
· Put the Send and Receive shapes inside a Scope shape
· Set the Scope’s transaction type to “Long Running”
· Add a Catch block expecting type “System.Exception”
· Set the “Delivery Notification” of the associated Port to “Transmitted”
· Change the “Retry Count” of the associated port to 0 (This will make sure BizTalk will raise the exception, instead of a warning, and you can capture that)
· Now capture and do whatever with the exception inside the Catch block