[SCCM 2012] SCCM 2012 のステータス フィルター規則の既存の設定を変更すると、サイト ステータスやコンポーネント ステータスが更新されなくなる

こんにちは、System Center サポートの石井です。

日本語版 SCCM 2012 (SP 無し、SP1 問わず) において、"ステータス フィルター規則" の既存の設定を変更する場合に注意事項があります。

以下のように、サイトの "ステータス フィルター規則" の設定画面を開くと、既定で用意されたものが 13 個用意されています。

この既存の設定について、設定変更を行ってしまうと、サイト ステータスやコンポーネント ステータスが更新されなくなるという問題が発生します。
1. <問題の予防>
大きなニーズが無い限り、既存の設定についての設定変更は行わないようお願いします。新規の規則作成であれば問題は無いので、可能な限り新規追加にて対応をして下さい。

2. <問題の回避策>
既に何らかの設定変更を実施いただいており、サイト ステータスやコンポーネント ステータスが更新されない問題が発生している場合、後述の回避策を実施下さい。

3. <設定の変更が避けられない場合>
既存の規則について、エンド様の要件上、設定の変更が必要な場合には、設定変更後に回避策の実施を行うことで、設定を変更可能です。
この問題については、開発部門にフィードバックし、原因特定や改善に向けての調査を開始しております。問題の改善までの間、運用による回避にご協力をお願いいたします。

 

問題の影響度
=============
"サイト ステータス" や "コンポーネント ステータス" といった、SCCM 2012 のサイトの役割において異常が発生していないか、監視する機能が停止してしまいます。
クライアント管理上、あるいはサーバーの動作上の実際の動作に影響はありません。しかしながら、万が一、何らかの内部エラーが発生し、コンポーネントが動作異常となった場合や、エラー検知した場合に、このような監視画面からエラーの発生を検知できません。
再現手順
=============
事象発生時の再現手順の一例です。以下のように、"その他すべてのメッセージをサイト データベースに書き込み~" のステータス フィルター規則の保存日数を、既定の 30 日から 31 日に変更し、保存すると問題が発生します。

何がおきているか
=============
既存のフィルターの変更を行うと、日本語訳されたフィルターをもう一つ定義として追加してしまいます。本来であれば、既存の設定の設定変更に過ぎないため、新規追加は発生してはなりません。
問題が起きると、このルールの数について、内部で保持されている設定数が実際のルール数よりも多くなってしまい、不一致となります。このため、サイト ステータスやコンポーネント ステータスといった情報の更新が停止してしまいます。

また、サイト サーバーのインストール フォルダーの、Logs フォルダー配下、Statmgr.log には以下のようなメッセージが記録されます。
-----------
ERROR: The component item for SMS_STATUS_MANAGER in the master site control file does not contain property list items for a status filter named "SMS_STATUS_MANAGER", or those property lists are corrupt or badly formatted.
-----------

以下画像 (クリックで拡大可能) が、内部設定 (右側) と、実際の設定数 (左側) との不一致を示したものです。日本語訳されたルールが内部的に増加してしまっていることがわかります。

回避策
=============
問題の発生しているサイト サーバーにログインし、以下の手順を実施することで、増加してしまったルールを削除出来ます。

誤った設定変更は、SCCM サイト データベースの破損など、取り返しのつかない問題となる場合があります。設定変更前にサイトのバックアップを必ず取得下さい。

1    ConfigMgrサイト サーバーに管理者としてログオンする。
2    コマンドプロンプト管理者として開き、WbemTest.exeを実行する。
3    [接続…]ボタンをクリック、名前空間にroot\SMS\site_<サイトコード>を入力し、[接続]ボタンをクリックする。
4    [クラスの列挙…]ボタンをクリック、[スーパークラス]は空のままで[再帰]を選択し、[OK]ボタンをクリックする。
5    [クエリ結果]画面で、SMS_SCI_Componentを選択し、ダブルクリックする。
6    [SMS_SCI_Componentのオブジェクト エディター]画面で、[インスタンス]ボタンをクリックする。
7    [クエリ結果]画面で、SMS_SCI_Component.FileType=2.ItemName="SMS_STATUS_MANAGER|<事象が発生しているサイト サーバー名>で始まる行を選択し、ダブルクリックする。
8    [SMS_SCI_Component.FileType=2…]画面で、プロパティ一覧からPropListsの行を選択し、[プロパティの編集]ボタンをクリックする。
9    [プロパティ エディター]画面で、[埋め込みを表示]ボタンをクリックする。
10    [クエリ結果]画面で、SMS_EmbeddedPropertyList=<no key>の行が15オブジェクト表示される。
11    一覧の1行目をダブルクリックする。
12    [SMS_EmbeddedPropertyListのインスタンス]画面で、プロパティ一覧からPropertyListNameの行の値を確認する。
13    PropertyListNameプロパティの値が "Status Filter: SMS_STATUS_MANAGER" でなければ、[閉じる]ボタンでインスタンス画面を閉じ、[クエリ結果]画面の次の行をダブルクリックする。
14    PropertyListNameプロパティの値が "Status Filter: SMS_STATUS_MANAGER" であるインスタンスを見つけたら、Valuesプロパティを選択し、[プロパティの編集]ボタンをクリックする。
15    [プロパティ エディター]画面が開く。値の文字列の最後に "その他のすべてのメッセージをサイト データベースに書き込み、ユーザーがこれらのメッセージを削除できるようになるまでの期間を指定します。" が存在することを確認する。
16    値の文字列から、この日本語の文字列部分のみを削除する。直前のカンマも削除することに注意する。

編集前:"Default Actions=…the messages.","その他のすべての…を指定します。"
編集後:"Default Actions=…the messages."

17    [プロパティの保存]ボタンをクリックする。
18    [SMS_EmbeddedPropertyListのインスタンス]画面を、[オブジェクトの保存]ボタンで閉じる。
19    [クエリ結果]画面を、[閉じる]ボタンで閉じる。
20    [プロパティ エディター]画面を、[プロパティの保存]ボタンで閉じる。
21   [SMS_SCI_Component.FileType=2…]画面を、[オブジェクトの保存]ボタンで閉じる。
22   [クエリ結果]画面を、[閉じる]ボタンで閉じる。
23   [SMS_SCI_Componentのオブジェクト エディター]画面を、[閉じる]ボタンで閉じる。
24   [クエリ結果]画面を、[閉じる]ボタンで閉じる。
25   [Windows Management Instrumentation]画面を、[終了]ボタンで閉じる。
26   ConfigMgr サイトサーバーを再起動する。
27   起動後にConfigMgr管理コンソールを開き、コンポーネント ステータスの最終ステータス メッセージの日時が更新されていることを確認する。