Tuesday, February 17, 2009

BizTalk Server Host Throttling continued

In the previous article, I explained what is host throttling and what are the mitigation strategies to avoid reaching throttling condition.
Since Publishing throttling state = 4, we increased the process memory threshold, but this led to another problem. The host instance started generating an "out of memory" error. Microsoft recommends that if an "out of memory" error is raised by increasing the Process memory usage threshold, then consider reducing the values for the Internal message queue size and In-process messages per CPU thresholds. And in worse case, if your BizTalk server regularly runs out of virtual memory, then consider BizTalk Server 64-bit.

Wednesday, January 14, 2009

Changes not reflected in Sharepoint Designer if you use public URL of WSS site

If you have changed the public URL of your WSS site, you can open your site in Sharepoint Designer using either the public URL or internal URL. But, when you open the site with the public URL, the changes done in Sharepoint Designer will not be reflected. You must open the site using the internal URL for any updates.

Tuesday, December 30, 2008

XML parsing error: Not enough storage is available to complete this operation

We had a stored procedure which was running fine in the production environment until recently, just out of the blue, we started getting the following SQL exception:
The adapter failed to transmit message going to send port "SendPort1" with URL "SQL://testsvr/testdb/". It will be retransmitted after the retry interval specified for this Send Port. Details:"HRESULT="0x80040e14" Description="The statement has been terminated."
HRESULT="0x80040e14" Description="XML parsing error: Not enough storage is available to complete this operation."

The stored procedure was using sp_xml_preparedocument to insert data from an xml source into the database. The data size was approximately 10MB.

We went through a lot of posts, some of which suggested restarting the server; which obviously is not the solution for the production environment. We tried out a simple trick which worked in our case. Execute the following command on Sql server:
dbcc freeproccache
This command is primarily used to clear the procedure cache.

Tuesday, November 25, 2008

Storing config info in BizTalk


There are several ways of storing config info, for example:
  1. Use the .config file of the service (BTSNTSvc.exe.config) - can only be used in single server environment.

  2. SSO database - This is a good option considering data is encrypted before saving. Also, SSO comes with admin and client utilities, which are good graphical applications for managing data.

  3. BRE - This is my favourite option since BizTalk's business rules composer provides an easy-to-use interface to define and modify business policies. You don't need to be a BizTalk expert to make changes in business policies. But, I would agree that it definitely cannot be used for storing sensitive information like connection strings, password etc. BRE can be used for making information, that is not sensitive, configurable. It can be used in numerous scenarios, from configuring email addresses (for SMTP port) to error messages to fixed values (which you would rather keep configurable than hard-coding in your orchestrations, maps, schemas).

    For example, below is a simple business rule that sets the subject and recipients of the email. Note, that this rule will always be executed since the condition is 1=1. This is how we can store configuration information, although, this is not the way it was intended to be used :) One may argue that subject and list of recipients for an email can be configured at the send port too, if it does not change with any conditions, but the example here can be easily modified to make it conditional. 1=1 is just used to demonstrate how we can use BRE for storing any configuration information that is not conditional.













How to change the file name of the SMTP Attachment in BizTalk

To change the file name of the SMTP Attachment in BizTalk:

myMessage(MIME.FileName) = “test.txt”