Microsoft KB Archive/332188

= Database lookup functoid or scripting functoid works in Mapper but fails in channel =

Article ID: 332188

Article Last Modified on 6/6/2007

-

APPLIES TO


 * Microsoft BizTalk Server 2002 Standard Edition
 * Microsoft BizTalk Server 2000 Standard Edition
 * Microsoft Windows Server 2003, Standard Edition (32-bit x86)
 * Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
 * Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
 * Microsoft Windows Server 2003, Web Edition
 * Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
 * Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems

-



This article was previously published under Q332188





SYMPTOMS
A BizTalk Mapper database lookup functoid that works correctly when you test the map from Test Map on the Tools menu fails when it is called from a BizTalk channel. An error message similar to the following is generated in the BizTalk Server Application log:

Event Type:           Error Event Source:         BizTalk Server Event Category:       Document Processing Event ID:             324 Date:                 11/18/2002 Time:                 16:21:46 User:                 N/A Computer:             BIZTALKSERVER Description:

An error occurred in BizTalk Server.

Details: -- [0x0139] The XML document could not be translated. The map specified by reference &quot;http://BIZTALKSERVER/BizTalkServerRepository/Maps/DBLOOKUPFUNCTOID.xml&quot; failed. Verify that the map is up to date.

[0x0140] The following channel configuration setting is not valid: &quot;TESTDBLOOKUP&quot;

[0x013f] The server could not finish processing the document.

[0x1730] Suspended Queue ID: &quot;{CE02F5FE-5977-42A7-B936-13F6B2F991C0}&quot;

[0x013f] The server could not finish processing the document.

This problem also occurs when a BizTalk Mapper scripting functoid calls a Microsoft COM+ application, and the COM+ application accesses a database transactionally.



CAUSE
This problem occurs if the database lookup functoid or scripting functoid cannot enlist in the transaction that is spawned by the BizTalk Messaging engine when the channel is called.

All database calls that are made from a BizTalk map must enlist in the transaction that is spawned by the BizTalk Messaging engine when a document is processed or the Messaging engine does not process the document and sends the document to the suspended queue.



RESOLUTION
To resolve this problem, follow these steps:
 * 1) Start the Component Services Microsoft Management Console (MMC) snap-in. To do this, click Start, point to Programs, point to Administrative Tools, and then click Component Services.
 * 2) Expand Computers, expand My Computer, and then expand COM+ Applications.
 * 3) Right-click the BizTalk Server Internal Utilities COM+ application, and then click Properties.
 * 4) Click the Advanced tab.
 * 5) On the Advanced tab, click to clear the Disable changes check box, and then click OK.
 * 6) Expand the BizTalk Server Internal Utilities COM+ application, expand Components, right-click BizTalk.InterchangeStateEngineTx.1, and then click Properties.
 * 7) Click the Transactions tab.
 * 8) On the Transactions tab, click Serialized in the Transaction Isolation Level box, and then click OK.
 * 9) Expand the COM+ application, expand Components, right-click the component you want, and then click Properties.
 * 10) Click the Transactions tab.
 * 11) On the Transactions tab, click Required in the Transaction Support box, click Serialized in the Transaction Isolation Level box, and then click OK.
 * 12) Shut down any COM+ applications for which you have changed the transaction isolation level, and then stop and restart the BizTalk Messaging Service. To shut down a COM+ application, right-click the COM+ application, and then click Shut down.

Note If the Shut down command is not available, the COM+ application is not running. Therefore, you do not have to shut down the COM+ application.



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the &quot;Applies to&quot; section.



Steps to reproduce the problem

 * 1) Add a database lookup functoid to a BizTalk map, and then configure the database lookup functoid to query a remote SQL Server database.
 * 2) Verify that you can successfully run the database lookup functoid from Test Map on the Tools menu of the BizTalk Mapper.
 * 3) Call the map from a BizTalk Server channel to verify that you can run the database lookup functoid from the channel successfully.
 * 4) Stop the MSDTC service on the remote computer running SQL Server that the database lookup functoid is querying.
 * 5) Call the map from a BizTalk Server channel again.

