OLAP キューブService Managerトラブルシューティング

重要

このバージョンのService Managerはサポート終了に達しました。 Service Manager 2022 にアップグレードすることをお勧めします。

次のセクションでは、Service Manager データ ウェアハウスのオンライン分析処理 (OLAP) データ キューブのトラブルシューティングに必要な一般的な問題について説明します。

エラーの処理

データの整合性を確保するために DWRepository データベースにセーフガードが存在しますが、処理エラーの可能性を完全に防ぐわけではありません。 最も一般的な処理エラーは DimensionKeyNotFound 例外です。 SQL Server Analysis Server (SSAS) ディメンションは既定で 60 分ごとに処理されるため、ファクトのメジャー グループの処理中にディメンション キーがまだ存在しない可能性があります。 この場合、既定では、処理ロジックは ProcessUpdate タスクを使用して SSAS ディメンションを再処理してから、キーのエラーを解決するために 2 回までファクトを再処理します。

この再処理がエラーになる可能性がある、まれな状況がいくつかあります。 このエラーの原因として考えられるのは、次のとおりです。

  • データ整合性を確保するために、データ ウェアハウス リポジトリのみが外部キーを使用します。 データ マートには、パフォーマンスに関する考慮事項のための外部キーがありません。 読み込みプロセスでは、ActiveX Data Objects メソッドを使用してリポジトリからデータ マートにデータを一括移動するため、タイミングの問題の結果として、ディメンション キーの前にファクト データが読み込まれた可能性があります。 この問題を解決するには、既存のディメンション キーを移動するために、読み込みプロセスの再実行が必要です。

  • データ マートが複数ある状況では、各データ マートのすべてのディメンションが、プライマリ データ ウェアハウス データ マートをターゲットにします。 これは、OLAP キューブのサイズと処理時間を小さくするためです。 ただし、Operations Manager または Configuration Manager データ マートのファクトについては、プライマリ データ ウェアハウス データ マートにまだ存在しないディメンション キーをターゲットにすることもできます。 この場合、Operations Manager か Configuration Manager のデータ マートをターゲットとするキューブの処理エラーを解決するために、プライマリ データ マートで読み込みジョブを実行する必要があります。

MDX カスタマイズのトラブルシューティング

多くのキューブのカスタマイズには多次元式 (MDX) に関する実用的な知識が必要であるため、OLAP キューブのカスタマイズに使用される初期 MDX 式で構文エラーが発生するのが一般的です。 ニーズに適した式になるまで、何回も試す必要がある場合があります。 CubeExtension を使用、または SystemCenterCube 要素で定義して OLAP キューブに MDX 式を追加する前に、その変更を保存しないで Business Intelligence Development Studio (BIDS) または SSAS を使用して OLAP キューブの MDX 式をテストしてください。

ただし、CubeExtension を使用して管理パックで MDX 式を追加してエラーが発生した場合は、そのキューブ拡張をアンインストールして、OLAP キューブで行われた変更を元に戻すことができます。 式が SystemCenterCube 要素を使用して定義されている場合は、管理パックをアンインストールしてから、修正を行って OLAP キューブ管理パックを再展開する前に、SSAS から OLAP キューブを手動で削除する必要があります。 このため、CubeExtension 要素を使用して、キューブのカスタマイズを定義する必要があります。

OLAP キューブ管理パックの展開エラー

WorkItems Assigned To User メジャー グループを確認して、特定の部署のすべてのユーザーをスライスする状況があるとします。 UserDimにフィルターを適用しても、何も起きない、つまり何のデータも返りません。 UserDim にはメジャー グループとのリレーションシップがあるため、混乱を招く可能性があります。

このような場合、多次元モデルでは、同じデータベース ディメンションが複数のロールを持つことができるということに注意してください。 これらのディメンションは、多様ディメンションと呼ばれます。 たとえば、時間ディメンションは、フライト情報を記述する OLAP キューブで複数回使用されることがあります。 この場合の多様ディメンションは、 Departure TimeArrival Timeで両者は異なりますが、両方とも Time ディメンションがターゲットです。

WorkItems Assigned To User の例では、ユーザー ディメンションの特定の多様名は、実際は AssignedToUserです。 ユーザーが "UserDim" ではなくこの特定のディメンションでフィルター処理した場合、正しい情報が返されます。

BIDS には [ディメンションの使用法] タブと呼ばれる便利な機能があり、ディメンションと OLAP キューブの間のリレーションを表示して、OLAP キューブのスライス アンド ダイスに使用するディメンションを特定できます。 さらに言えば、 WorkItems Assigned To User の例では、 UserDim には WorkItemAssignedToUser メジャー グループへのリレーションシップがありませんが、 UserDim(AssignedToUser) には、結合属性が UserDimKey であるメジャー グループへのリレーションシップがあります。 この場合、[ディメンションの使用法] タブで、多様名が括弧に囲まれて強調表示されます。

Service Managerには、[ディメンション配分状況] タブ機能がありません。 そのため、特定のキューブにフィルターを適用できるディメンションを正確に特定するには、BIDS を見る必要があります。

リモート SSAS サーバーで OLAP キューブを処理できない

特定の状況では、ファイアウォールが正しく構成されていないため、リモート SSAS サーバーでの OLAP キューブの処理が失敗する可能性があります。 既定の SSAS インスタンスは TCP/IP ポート 2383 を使用しますが、このポートは、アクセスできるようにファイアウォールのブロックが解除されていなければなりません。 ポートのブロックを解除するには、次のコマンドライン手順を実行します。

C:\Windows\system32>set port=2383   
C:\Windows\system32>netsh advfirewall firewall add rule name="Analysis Services" protocol=TCP dir=in localport=2383 action=allow  

OLAP キューブの処理が停止する

OLAP キューブの処理が停止する多くの原因が考えられます。 まず、データ ウェアハウスと SSAS サーバーが同じサーバーでホストされている状況で、データ ウェアハウスの抽出、変換、読み込み (ETL) ジョブとキューブ処理ジョブを同時に実行するのに十分なメモリが確保されるように、サーバーに十分な RAM があることを確認する必要があります。 次は、解決方法のいくつかの一覧です。

  1. Microsoft SQL Server 2008 Analysis Services には既知のデッドロック問題があります。 回避策は、処理が停止する前にスレッド プールの処理でスレッド数を増やすことです。 システムが既に停止している場合の回避策は、System Center Management サービスと Analysis Services サービスの両方を再起動し、キューブ処理作業項目を状態 3 にリセットすることです。つまり、ワークフロー エンジンService Managerが再起動できるようにします。

    注意

    関連するキューブ処理作業項目を確認するには、DWStagingAndConfig データベースで次のクエリを実行します。 これらのクエリは個別に表示されます。ただし、1 つのクエリで簡単に結合できます。

    select processId from infra.process where processname like 'Process.{CubeName}'  
    select batchid from infra.batch where processId = {ProcessId from previous query}  
    select * from infra.workitem(nolock) where BatchId = {BatchId from previous query}  
    update infra.workitem set statusid = 3 where workitemId = {workitemId from previous query)  
    
    
  2. SSAS サービスの CoordinatorExecutionMode プロパティを確認し、正しく設定されていることを確認します。 この問題の詳細については、 SQL Server フォーラムの問題を参照してください。

DWMaintenance タスクは、ManageCubePartitions または ManageCubeTranslations ステップで停止します

この状況で、最も一般的な原因は、SSAS サーバーの応答がないことです。 回避策は、前のセクション「OLAP キューブ処理が停止する」の最初の手順と同じです。関連するキューブ処理作業項目を確認するには、DWStagingAndConfig データベースで次のクエリを実行します。 これらのクエリは個別に表示されていますが、簡単に 1 つのクエリに結合できます。

select processid from infra.process where processname = 'DWMaintenance'  
select * from infra.ProcessModule where ProcessId = {ProcessId from previous query} (Note the ProcessModuleId where the VertexName is ManageCubePartitions/ManageCubeTranslaions)  
Select * from infra.batch where ProcessId = {ProcessId from previous query} (Note the BatchId from the largest batch)  
select * from infra.WorkItem where BatchId = {BatchId from previous query}  
update infra.workitem set statusid = 3 where workitemId = {workitemId for the step that is not responding with the corresponding processmoduleid for ManageCubePartitions/ManageCubeTranslations)  

次の手順