If a destination database recovery state is not set to the no-recovery (restoring) state, log shipping job will fail during the process of transaction log restore with the "The log or differential backup cannot be restored because no files are ready to rollforward. RESTORE LOG is terminating abnormally" error.
In order to perform restore of transaction log file during the log shipping job, the destination database needs to be initialized – database recovery state needs to be set to no-recovery (restoring) state
There are two workarounds for this issue:
- Allow ApexSQL Backup to automatically change the database recovery state during the log shipping wizard
- Change the recovery state manually via SQL Server Management Studio
a. When the user is creating a new log shipping job via the log shipping job wizards, it is important to ensure that ”initialize destinations with full backup” checkbox is checked. This will automatically change (set) database state to the no-recovery (restoring) state. This will consequentially enable the process to complete successfully.
b. The database recovery state can be changed to the no-recovery (restoring) state manually from SQL Server Management Studio. To perform this, user needs to execute following steps:
Locate the destination database in SQL Server Management studio, Right click on the database, and navigate to Tasks ➜ Restore ➜ Database
In the Select a page menu, select Options and in the Recovery state drop menu select Restore with norecovery
- Click OK to complete the process.