共用方式為


當您連線到 BizTalk Server 中的 BizTalkMsgBoxDb 資料庫時,封鎖、死結狀況或其他 SQL Server 問題

本文提供連線到 BizTalkMsgBoxDb BizTalk Server 中 Microsoft資料庫時解決 SQL Server 問題的相關信息。

原始產品版本: BizTalk Server
原始 KB 編號: 917845

徵兆

在 BizTalk Server 中,當您嘗試連線到 BizTalkMsgBoxDb 資料庫時,可能會遇到封鎖、死結狀況或其他Microsoft SQL Server 問題。

原因

如果有下列一或多個條件成立,即可能發生此問題:

  • 資料庫上BizTalkMsgBoxDb已啟用 [自動建立統計數據] 選項。
  • 資料庫BizTalkMsgBoxDb已啟用 [自動更新統計數據] 選項。
  • 平行 處理原則 的最大程度選項會針對資料庫或裝載此資料庫的 SQL 實例,設定為 1 BizTalkMsgBoxDb 以外的值。
  • 當 BizTalk Server 正在處理數據時,您要重組或重建資料庫中的 BizTalkMsgBoxDb 索引。

解決方案 1:停用 [自動建立統計數據] 選項和 [自動更新統計數據] 選項

若要解決此問題,請停用 SQL Server 中資料庫的 [自動建立統計數據 ] 和 [ 自動更新統計數據 ] 選項 BizTalkMsgBoxDb

解決方案 2:將平行處理原則的最大程度選項設定為 1

若要解決此問題,請在資料庫設定或裝載此資料庫的 SQL 實例中BizTalkMsgBoxDb,將平行處理原則的最大程度選項設定為 1

解決方案 3:當 BizTalk Server 正在處理數據時,請勿重建索引

若要解決此問題,請勿執行 bts_RebuildIndexes 預存程式或任何在 BizTalk Server 處理數據時重建 BizTalk Server 資料庫中索引的 SQL 命令。

注意

不支持重組 BizTalk Server 資料庫中的索引。

bts_RebuildIndexes預存程式

重建資料庫中索引 BizTalkMsgBoxDb 的唯一支援方法是執行 bts_RebuildIndexes 預存程式。 在 BizTalk Server 2006 和更新版本上,您可以執行 dtasp_RebuildIndexes 預存程式來重建資料庫中的 BizTalkDTADb 索引。

大部分的 BizTalk 索引是以 GUID 為基礎。 許多測試都顯示,只要未掃描數據表,GUID 型索引就能比 BizTalk 特定工作負載的身分識別型索引執行得更好。 這可能會導致片段。 不過,由於數據流以穩定的速度進出數據表,因此分散可能不會造成任何問題。 如果預期資料庫中會建置 BizTalkMsgBox 大量數據,您可以在排程停機期間定期重建索引。 相同的指導方針適用於追蹤資料庫。

您可以使用 DBCC DBREINDEX SQL 命令,在其他 BizTalk Server 資料庫中重建索引。 如需如何使用 DBCC DBREINDEX SQL 命令的範例,請以滑鼠右鍵按兩下 bts_RebuildIndexes 預存程式,然後按兩下 [ 屬性]。

Microsoft只支援在 BizTalk Server 停機期間重建資料庫索引。 重建索引之前,您應該停止所有主機實例和 SQL Server Agent。 當您在 BizTalk Server 2006 和更新版本中執行 bts_RebuildIndexes 預存程式時,您可能會收到下列其中一個錯誤訊息:

  • 錯誤訊息 1

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 674101442 (object 'TrackingData')
    此資料庫一致性檢查程式 (DBCC) 命令不支援這種物件。

  • 錯誤訊息 2

    訊息 5239、層級 16、狀態 1、程式bts_RebuildIndexes、第 4 行無法處理物件標識符722101613(物件 'TrackingData'),因為此 DBCC 命令不支援此類型的物件。

發生此問題的原因是 TrackingData 物件是 BizTalk Server 2006 和更新版本中的檢視。 若要解決此問題,請執行下列動作,然後執行 bts_RebuildIndexes 預存程式:

  1. 將預存程式中的下列這一行 bts_RebuildIndexes 批注化。

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. 將下列幾行新增至 bts_RebuildIndexes 預存程式。

    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