ApexSQL Recover doesn’t recover all lost data

This article describes why in some cases ApexSQL Recover cannot recover all lost data.

Symptoms
ApexSQL Recover doesn’t recover all lost records.

Cause: Post incident activities have overwritten data necessary for recovery

The following ApexSQL Recover options recover lost data by reading a database MDF file and recovering data from it:

  1. The From TRUNCATE operation option
  2. The Deleted BLOBs option

These options cannot provide valid results in case that there were many post-incident activities on the affected database. Post-incident activities (either user or system), can partially or completely overwrite data pages that were marked as free for re-use, and therefore the lost data cannot to be recovered.

Resolution
If available, provide another copy of the MDF file that has not been affected by post-incident activities. Note that MDF files restored from a database backup cannot be used with these recovery options since the backup process removes all data pages marked for reuse

Cause: The database was in Simple recovery mode

In case the affected database was in the Simple recovery mode at the moment of the incident, ApexSQL Recover cannot use any transaction logs for the recovery process. This is caused by the fact that the transaction log in the Simple recovery mode holds only the records which describe applied changes until a checkpoint has occurred.

Note that recovering lost data from an MDF file, without appropriate additional sources can be successful, but the results are not guaranteed, as the actual data may be overwritten by other post-incident activities.

Resolution
If available, provide the transaction log that hasn’t been truncated and contains the transactions from the moment of the incident using the Specify additional data sources for the recovery dialog. Use the Add option to browse for backup files (.bak and .trn).