BizTalk Serverで BizTalkMsgBoxDb データベースに接続するときに、ブロック、デッドロック状態、またはその他のSQL Serverの問題

この記事では、Microsoft BizTalk Server でデータベースに接続するときにSQL Serverの問題をBizTalkMsgBoxDb解決する方法について説明します。

元の製品バージョン: BizTalk Server
元の KB 番号: 917845

現象

BizTalk Serverでは、データベースに接続しようとすると、ブロック、デッドロック状態、またはその他の Microsoft SQL Serverの問題が発生しますBizTalkMsgBoxDb

原因

この問題は、次の条件の 1 つ以上が当てはまる場合に発生する可能性があります。

  • データベースで [自動Create統計] オプションが有効になっていますBizTalkMsgBoxDb
  • [ 統計の自動更新 ] オプションがデータベースで BizTalkMsgBoxDb 有効になっています。
  • 並列処理の最大次数オプションは、データベースまたはこのデータベースをホストする SQL インスタンスの BizTalkMsgBoxDb 1 以外の値に設定されます。
  • BizTalk Serverがデータを処理しているときに、データベース内のBizTalkMsgBoxDbインデックスを最適化または再構築します。

解決策 1: [自動Create統計] オプションと [統計の自動更新] オプションを無効にする

この問題を解決するには、SQL Serverでデータベースの [自動Create統計] オプションと [統計の自動更新] オプションをBizTalkMsgBoxDb無効にします。

解決策 2: 並列処理の最大次数オプションを 1 に設定する

この問題を解決するには、データベース設定またはこのデータベースをホストしている SQL インスタンスで、並列処理の最大次数オプションを BizTalkMsgBoxDb1 に設定します。

解決策 3: BizTalk Serverがデータを処理しているときにインデックスを再構築しない

この問題を解決するには、ストアド プロシージャや、データの処理時にbts_RebuildIndexesBizTalk Server データベース内のインデックスを再構築する SQL コマンドBizTalk Server実行しないでください。

注:

BizTalk Server データベース内のインデックスの最適化はサポートされていません。

bts_RebuildIndexes ストアド プロシージャ

データベース内のインデックスを再構築するためにサポートされる唯一の BizTalkMsgBoxDb 方法は、ストアド プロシージャを bts_RebuildIndexes 実行することです。 BizTalk Server 2006 以降のバージョンでは、ストアド プロシージャをdtasp_RebuildIndexes実行してデータベース内のインデックスをBizTalkDTADb再構築できます。

ほとんどの BizTalk インデックスは GUID ベースです。 多くのテストでは、テーブルがスキャンされない限り、GUID ベースのインデックスは、BizTalk 固有のワークロードの ID ベースのインデックスよりも優れたパフォーマンスを発揮できることを示しています。 これにより、断片化が発生する可能性があります。 ただし、データは安定したペースでテーブルの送受信を行うため、断片化によって問題が発生しない可能性があります。 データベースに BizTalkMsgBox 大量のデータが蓄積されることが予想される場合は、スケジュールされたダウンタイム中にインデックスを定期的に再構築できます。 追跡データベースにも同じガイドラインが適用されます。

SQL コマンドをDBCC DBREINDEX使用して、他のBizTalk Server データベースのインデックスを再構築できます。 SQL コマンドの使用方法 DBCC DBREINDEX の例については、ストアド プロシージャを bts_RebuildIndexes 右クリックし、[ プロパティ] をクリックします。

Microsoft では、BizTalk Serverダウンタイム中のデータベース インデックスの再構築のみがサポートされます。 インデックスを再構築する前に、すべてのホスト インスタンスとSQL Server エージェントを停止する必要があります。 BizTalk Server 2006 以降のバージョンでストアド プロシージャを実行bts_RebuildIndexesすると、次のいずれかのエラー メッセージが表示されることがあります。

  • エラー メッセージ 1

    Msg 5239、レベル 16、状態 1、プロシージャ bts_RebuildIndexes、4 行目オブジェクト ID 674101442を処理できません (オブジェクト 'TrackingData')
    このデータベース整合性チェッカー (DBCC) コマンドは、この種のオブジェクトをサポートしていません。

  • エラー メッセージ 2

    Msg 5239、Level 16、State 1、Procedure bts_RebuildIndexes、Line 4 この DBCC コマンドではこの種類のオブジェクトがサポートされていないため、オブジェクト ID 722101613 (オブジェクト 'TrackingData') を処理できません。

この問題は、オブジェクトが TrackingData 2006 以降のバージョンBizTalk Serverビューであるために発生します。 この問題を解決するには、次の操作を行い、ストアド プロシージャを 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