Need to update multiple records form schedule job

varma2
Mega Sage

Hi All,

 

Need to update the multiple records through scheduled job, Below script i have built with( updateMultiple), But its only update single record when we have the query with 50k records.

 

Please suggest.


lockout_users();

function lockout_users() {
var usr = new GlideRecord("sys_user");
usr.addEncodedQuery('u_service_account=false^locked_out=false^sys_domain!=e54164144f5cfa00d35a0f5d0210c725^sys_id!=6816f79cc0a8016401c5a33be04be441');
usr.query();
while (usr.next()) {
usr.setValue('locked_out', true);
usr.updateMultiple();
}
}

 

Thanks,

Varma

3 REPLIES 3

Vasantharajan N
Giga Sage
Giga Sage

@varma2 - Please try the below code snippet

lockout_users();

function lockout_users() {
    var usr = new GlideRecord("sys_user");
    usr.addEncodedQuery('u_service_account=false^locked_out=false^sys_domain!=e54164144f5cfa00d35a0f5d0210c725^sys_id!=6816f79cc0a8016401c5a33be04be441');    
    usr.setValue('locked_out', true);
    usr.updateMultiple()
}

Link updateMultiple function is given below please refer to it to https://developer.servicenow.com/dev.do#!/reference/api/tokyo/server_legacy/c_GlideRecordAPI#r_Glide... 


Thanks & Regards,
Vasanth

Prasad Dhumal
Mega Sage
Mega Sage

Hello Verma,

The query returns a large number of record and you are using updateMultiple() method.

It might only update one record, or a limited number of records, due to performance or memory constraints.

If you need to update a large number of records, it's recommended to break up the updates into smaller chunks, either by limiting the number of records returned by the query or by processing the records in batches, updating a portion of the records at a time.

Dhirendra Singh
Mega Sage

**while(usr.next()) -- this is looping one record at a time and hence only one record updates. You need to use scaffolding.

 

like below

var query = <ur encoded query>

var gr = new GlideRecord(tablename);

gr.addQuery(query);

gr.setValue('fieldname', fieldvalue);

gr.updateMultiple();