次の方法で共有


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

この記事では、Microsoft BizTalk Server の BizTalkMsgBoxDb データベースに接続するときの SQL Server の問題の解決に関する情報を提供します。

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

現象

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

原因

この問題は、以下の状況が少なくとも 1 つ該当する場合に発生する可能性があります。

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

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

この問題を解決するには、SQL Server の BizTalkMsgBoxDb データベースで Auto Create Statistics および Auto Update Statistics オプションを無効にします。

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

この問題を解決するには、BizTalkMsgBoxDb データベース設定またはこのデータベースをホストする SQL インスタンスで、max degree of parallelism オプションを 1 に設定します。

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

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

Note

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

bts_RebuildIndexes ストアド プロシージャ

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

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

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

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

  • エラー メッセージ 1

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

  • エラー メッセージ 2

    メッセージ 5239、レベル 16、状態 1、プロシージャ bts_RebuildIndexes、行 4 この DBCC コマンドは、この種類のオブジェクトをサポートしていないため、オブジェクト ID 722101613 (オブジェクト 'TrackingData') を処理できません。

この問題は、 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