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
ストアド プロシージャを実行します。
bts_RebuildIndexes
ストアド プロシージャの次の行をコメント アウトします。DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
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