1. Determine if there is more than one record damaged
Use dbscan (or DBTOOL introduced in Progress 9.1D06) to .
If there is more than one record damaged it might be advisable to restore a copy of the database into another location to determine if the data corruption also exists in the backup or if the backup of the database might be safer to revert to.
Before deleting corrupted records, in some cases it may be possible to review most of the fields of the record with 4GL / ABL code similar to the following logic:
for each <tablename> where recid(<tablename>) = <recid>.
display
<field1>
<field2>
etc.....
.
end.
- replace the actual table name in place of <tablename>.
- populate the corrupt recid in place of <recid>
- use the actual field names in place of <field(x)>, by adding one more field for the record until it fails.
- If it does not fail then check that you supplied the correct recid number.
2. To remove the bad record use idxfix
$ proutil <dbname> -C idxfix
Choose Option 6. Delete one record and it's index entries.
It will ask for the DBKEY supply the recid of the bad record
Since Progress 9 the area number that that table is resident in needs to be provided.