Database lookup functoid or scripting functoid works in Mapper but fails in channel (332188)



The information in this article applies to:

  • Microsoft BizTalk Server 2002
  • Microsoft BizTalk Server 2000

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 
 "http://BIZTALKSERVER/BizTalkServerRepository/Maps/DBLOOKUPFUNCTOID.xml" failed. 
 Verify that the map is up to date.

 [0x0140] The following channel configuration setting is not valid: "TESTDBLOOKUP"

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

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

 [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 "Applies to" section.

MORE INFORMATION

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.

REFERENCES

For more information about the "Failed to Enlist on calling object's transaction" error, click the following article number to view the article in the Microsoft Knowledge Base:

191168 Error "-2147168246 (8004d00a)" Failed to Enlist on calling object's transaction

For more information about the transaction isolation level of BizTalk Server 2002 COM+ components, click the following article number to view the article in the Microsoft Knowledge Base:

834439 Recommended transaction isolation level of BizTalk Server 2002 COM+ components


Modification Type:MajorLast Reviewed:12/9/2005
Keywords:kbprb KB332188 kbAudDeveloper kbAudITPRO