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 インスタンスで、並列処理の最大次数オプションを BizTalkMsgBoxDb
1 に設定します。
解決策 3: BizTalk Serverがデータを処理しているときにインデックスを再構築しない
この問題を解決するには、ストアド プロシージャや、データの処理時にbts_RebuildIndexes
BizTalk 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
実行します。
ストアド プロシージャで次の行を
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