You experience blocking, deadlock conditions, or other SQL Server issues when you try to connect to the BizTalkMsgBoxDb database in BizTalk Server

Symptoms

In Microsoft BizTalk Server, you experience blocking, deadlock conditions, or other Microsoft SQL Server issues when you try to connect to the BizTalkMsgBoxDb database.

Cause

This issue may occur if one or more of the following conditions are true:
  • The Auto Create Statistics option is enabled on the BizTalkMsgBoxDb database.
  • The Auto Update Statistics option is enabled on the BizTalkMsgBoxDb database.
  • The max degree of parallelism option is set to a value other than 1 on the computer that is running SQL Server and that is hosting the BizTalkMsgBoxDb database.
  • You defragment or rebuild an index in the BizTalkMsgBoxDb database when BizTalk Server is processing data.

Resolution

To resolve this issue, use one of the following methods.

Method 1: Disable the Auto Create Statistics option and the Auto Update Statistics option

To resolve this issue, disable the Auto Create Statistics option and the Auto Update Statistics option on the BizTalkMsgBoxDb database in SQL Server.

Method 2: Set the max degree of parallelism option to 1

To resolve this issue, set the max degree of parallelism option to 1 on the computer that is running SQL Server.

Method 3: Do not rebuild an index when BizTalk Server is processing data

To resolve this issue, do not run the bts_RebuildIndexes stored procedure or any SQL command that rebuilds an index in a BizTalk Server database when BizTalk Server is processing data.

Note Defragmenting an index in a BizTalk Server database is not supported.

More Information

The bts_RebuildIndexes stored procedure

The only supported method to rebuild an index in the BizTalkMsgBoxDb database is to run the bts_RebuildIndexes stored procedure. On BizTalk Server 2006 and later versions, you can run the dtasp_RebuildIndexes stored procedure to rebuild indexes in the BizTalkDTADb database.

Most of the BizTalk indexes are GUID-based. Many tests have shown that as long as the tables are not scanned, GUID-based indexes can perform better than identity-based indexes for BizTalk-specific workloads. This may cause fragmentation. However, because data flows in and out of the tables at a steady pace, fragmentation may not cause any issues. If lots of data is expected to build up in the BizTalkMsgBox database, you can periodically rebuild indexes during scheduled downtime. The same guidelines apply to the tracking database.

You can use the DBCC DBREINDEX SQL command to rebuild an index in the other BizTalk Server databases. For an example of how to use the DBCC DBREINDEX SQL command, right-click the bts_RebuildIndexes stored procedure, and then click Properties.

Note Microsoft only supports rebuilding database indexes during BizTalk Server downtime. You should stop all host instances and SQL Server Agent before you rebuild an index. When you run the bts_RebuildIndexes stored procedure in BizTalk Server 2006 and later versions, you may receive one of the following error messages:
Error message 1
Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4
Unable to process object ID 674101442 (object 'TrackingData')
This database consistency checker (DBCC) command does not support this kind of object.
Error message 2
Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 722101613 (object 'TrackingData') because this DBCC command does not support objects of this type.

This problem occurs because the TrackingData object is a view in BizTalk Server 2006 and later versions. To resolve this problem, do the following and then execute the bts_RebuildIndexes stored procedure:
  1. Comment out the following line in the bts_RebuildIndexes stored procedure.
    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
  2. Add the following lines to the bts_RebuildIndexes stored procedure.
    DBCC DBREINDEX ('[dbo].[TrackingData_0_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_3]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_3]') WITH NO_INFOMSGS
คุณสมบัติ

รหัสบทความ: 917845 - การตรวจสอบครั้งสุดท้าย: 5 พ.ค. 2011 - ฉบับแก้ไข: 1

คำติชม