sys_audit_deleteとsys_audit_relationレコードを自動的にクリーンアップIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 削除レコードの監査 [sys_audit_delete] テーブルとリレーションシップ変更の監査 [sys_audit_relation] テーブルには、削除されたレコードとその関係に関する情報が格納されます。これらのテーブルは [削除取り消し] 機能を有効にします。これにより、[削除されたレコードの監査] リストに移動し、フォームを開いて [レコードの削除取り消し] を選択することで、削除されたレコードを復元できます。 適切なメンテナンスを行わないと、これらのテーブルが非常に大きくなり、パフォーマンスの問題が発生する可能性があります。テーブルの辞書属性 no_audit_deleteを設定することで、監査レコードの生成を無効にすることができます。ただし、これらのレコードを監査し、特定の期間のみ保持する場合は、スケジュール設定された日数よりも古いレコードを消去するために、スケジュールスクリプトを使用できます。 重要:お客様は ServiceNow インスタンスに保存されている情報のデータ所有者および管理者です。保存する情報、使用方法、保持期間を決定します。ServiceNowは14日分のバックアップを保持しているため、削除されたデータがバックアップから完全に消去されるまでに14日かかります。本番環境で使用する前に、非本番インスタンスでスクリプトをテストしてください。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } サポートされているすべてのリリース Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 始める前に このジョブをサポートするインデックスを作成します。削除レコードの監査 [sys_audit_delete] テーブルのフィールド (tablename、sys_created_on) にインデックスを追加すると、スクリプトの効率が向上します。 スケジュール済みジョブを作成するには: 1.システム定義 > スケジュール済みジョブに移動します。 2.[新規] を選択します。 3.[選択したスクリプトを自動的に実行しますを選択します。 4.以下の情報を入力: 名前 (Name):Purge sys_audit_delete for sc_recurring_rollup after 7 days実行 (Run):定期的 (Periodically)繰り返し間隔 (Repeat Interval):1 分ごと (1 minute)実行するスクリプト: var vTableName = 'sc_recurring_rollup';var vDaysAgo = 7;PurgeAuditDeletedRecords(vTableName, vDaysAgo); function PurgeAuditDeletedRecords(pTableName, pDaysAgo) { // Set total number of records to delete and maximum size of each batch (recommend leaving this as 100) var pRecordsToDelete = parseInt(2000); var pBatchSize = parseInt(100); // Check table name and delta are set, generate encoded query, set up variables if ((pTableName) && (pDaysAgo)) { var v_encoded_query = 'sys_created_on<javascript:gs.daysAgoStart(' + pDaysAgo + ')^tablename=' + pTableName; var pDeleteCount = parseInt(0); // Loop deleting records while (pDeleteCount < pRecordsToDelete) { // Check if we need to reduce pBatchSize if ((pDeleteCount + pBatchSize) > pRecordsToDelete) { pBatchSize = pRecordsToDelete - pDeleteCount; } // Find records in sys_audit_delete var gr = new GlideRecord('sys_audit_delete'); gr.addEncodedQuery(v_encoded_query); gr.setLimit(pBatchSize); gr.query(); // Exit if there are no records to delete if (gr.getRowCount() == 0) { break; } // Increment delete counter pDeleteCount += parseInt(gr.getRowCount()); // Build array of sys_audit_delete sys_ids to be removed var pTargetSysids = []; while (gr.next()) { pTargetSysids.push(gr.sys_id.toString()); } // Delete referencing records from sys_audit_relation gr = new GlideRecord('sys_audit_relation'); gr.addQuery('audit_delete', 'IN', pTargetSysids); gr.query(); gr.deleteMultiple(); // Delete records from sys_audit_delete gr = new GlideRecord('sys_audit_delete'); gr.addQuery('sys_id', 'IN', pTargetSysids); gr.query(); gr.deleteMultiple(); } // Log work done gs.log('Deleted ' + pDeleteCount + ' records for ' + pTableName + ' from sys_audit_delete (and related sys_audit_relation records)', 'PurgeAuditDeletedRecords'); }} 5.必要に応じて、名前と繰り返し間隔の値を変更します。 スクリプト内の変数 vTableName および vDaysAgo を変更することもできます。 6.[送信] を選択します。 7.クリーンアップするテーブルごとに手順 1 〜 6 を繰り返します。テーブルごとに個別のジョブを作成することで、それぞれの保持期間を管理できます。 スクリプトログを監視するには、/syslog_list.do?sysparm_query=source=PurgeAuditDeletedRecords に移動します。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 辞書属性を使用したテーブルとフィールドの変更