CI のクラス名 [sys_class_name] を変更する際の問題Issue 症状 構成アイテムのクラスを変更するとき、または構成アイテムを再分類するときに、データの損失やパフォーマンスの問題が発生する可能性があります。 リリース 現在のバージョンとパッチ。 問題の詳細 CMDB 内の特定の CI のクラス名 [sys_class_name] を変更すると (cmdb_ci_linux_server を cmdb_ci_solaris_server に変更すると、問題が発生する可能性があります 原因 このタスクを実行する場合は、次の重要点に注意してください。 CI のクラスを変更すると、ターゲットテーブルに存在しない一部のフィールドデータが失われる可能性があります。たとえば、Linux サーバーには Solaris サーバーテーブルには存在しない [カーネルリリース] というフィールドがあります。CI を cmdb_ci_linux_server から cmdb_ci_solaris_server に変更すると、この [カーネルリリース] フィールドのデータはすべて失われます。この種の変更を行う前に、このような問題を認識し、考慮する必要があります。 トランザクションクォータの制限 [sysrule_quota] により UI からクラスの変更を実行すると、トランザクションがキャンセルされ、データが失われる可能性があります。 解決 限られた数の CI を選択して、各ステップでクラスを変更します。(~20〜40 CI) スケジュール済みジョブ [sysauto_script] を記述し、アドミンとして次のスクリプトを適切に入力して実行します。 サンプルコード: ChangeCIClass();function ChangeCIClass() { var lv_limit = 40; // We can have some restricted values like 20-40 var lv_temp = 1; var gr = new GlideRecord('<<old_ci_class_name>>'); // Must not be cmdb or cmdb_ci gr.addEncodedQuery("<<custom_query>>"); // Your query that gives you the records for which you wanted to change the class. gr.setLimt(lv_limit); gr.query(); while(gr.next() && gr.isValidRecord() && lv_temp < lv_limit) { gr.sys_class_name = 'new_class_name'; gr.update(); lv_temp++; }} 追加情報 トランザクションクォータルールの詳細については、次の製品ドキュメントのトピックを参照してください。 トランザクションクォータ トランザクションクォータのルールの設定 クラスの変更の詳細については、製品ドキュメントのトピック CI の再分類を参照してください。