Friday, April 8, 2011

Recovering Across Multiple Backup Generations

Let's say you have 10 generations of database backups when you discover that the current database file is corrupt.

You restore from the most recent full backup and apply the subsequent incremental log backups (like in Demonstrating Full and Incremental Backups)...

only to discover...

Horrors!


...that the most recent backup of the database is corrupt too!

Bite The Bullet!


Now let's say you're not sure when the database first became corrupted, but you're pretty sure that the oldest backup is OK, and you don't have time to go back one generation at a time.

The following demonstration shows how you can go all the way back to the beginning and
  • restore the oldest backup (generation 1 of 10), then

  • apply all the subsequent log files to get rid of the corruption without losing any data.
These Help topics apply...

Command file 01_run_everything.bat automates the whole demonstration by calling the other command files in the right order:
  • Create the database and a table to record progress,

  • make 10 generations of backup files,

    • each consisting of a full backup

    • followed by three consecutive incremental log backups

    • with a new row inserted in the table after each full backup

    • and after the third incremental backup in each generation

    • for a total of 20 rows, then

  • show the rows as they exist before the restore begins,

  • delete the current database,

  • restore the full database backup file from generation 1,

  • apply all the subsequent incremental transaction log backup files

  • plus the current log file,

  • start the database and

  • show how all the rows have been restored.

CALL 02_run_dbinit12.bat
CALL 03_run_dbspawn_dbsrv12.bat
CALL 04_run_dbisql_to_create_table.bat

REM Generation 1...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 2...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 3...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 4...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 5...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 6...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 7...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 8...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 9...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

REM Generation 10...
CALL 05_run_dbbackup12_full.bat
CALL 06_run_dbisql_to_insert_row.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 07_run_dbbackup12_incremental.bat
CALL 06_run_dbisql_to_insert_row.bat

CALL 08_run_script_to_display_rows.bat
PAUSE Make a note how many rows exist in t1...

CALL 09_stop_drop_database.bat
CALL 10_restore_database.bat
CALL 03_run_dbspawn_dbsrv12.bat

CALL 08_run_script_to_display_rows.bat
PAUSE Note that the last row is missing from t1...
PAUSE All done...

Backup


02_run_dbinit12.bat starts the demonstration by creating an empty SQL Anywhere 12 database:

"%SQLANY12%\bin32\dbinit.exe"^
ddd12.db

03_run_dbspawn_dbsrv12.bat starts that database:

"%SQLANY12%\bin32\dbspawn.exe"^
-f "%SQLANY12%\bin32\dbsrv12.exe"^
-o dbsrv12_log_ddd12.txt^
-oe dbsrv12_log_fatal_ddd12.txt^
-os 10M^
-x tcpip^
-zl^
-zp^
-zt^
ddd12.db

04_run_dbisql_to_create_table.bat creates a table:

"%SQLANY12%\bin32\dbisql.com"^
-c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
CREATE TABLE t1 ( pkey INTEGER NOT NULL DEFAULT AUTOINCREMENT PRIMARY KEY );

05_run_dbbackup12_full.bat creates a full backup of the database and transaction log:

REM ******************************************************************
REM Create empty backup\generation_temp subfolder
MD backup
CD backup
RD /S /Q generation_temp
MD generation_temp
CD ..

ECHO ********************************************^
*********************************************>>backup\generation_temp\dbbackup_log.txt
ECHO Full dbbackup started >>backup\generation_temp\dbbackup_log.txt
DATE /T >>backup\generation_temp\dbbackup_log.txt
TIME /T >>backup\generation_temp\dbbackup_log.txt

"%SQLANY12%\bin32\dbbackup.exe"^
-c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
-o backup\generation_temp\dbbackup_log.txt^
-x^
backup\generation_temp

IF ERRORLEVEL 1 GOTO backup_failed

REM ******************************************************************
REM Move backup to generation10 subfolder
CD backup
RD /S /Q generation1
RENAME generation2 generation1
RENAME generation3 generation2
RENAME generation4 generation3
RENAME generation5 generation4
RENAME generation6 generation5
RENAME generation7 generation6
RENAME generation8 generation7
RENAME generation9 generation8
RENAME generation10 generation9
RENAME generation_temp generation10
CD ..
DIR /S backup\generation10\*.* >>backup\generation10\dbbackup_log.txt
ECHO Full dbbackup OK >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt
GOTO end

:backup_failed
REM ******************************************************************
REM Backup failed
ECHO Error: Full dbbackup failed >>backup\generation_temp\dbbackup_log.txt
DATE /T >>backup\generation_temp\dbbackup_log.txt
TIME /T >>backup\generation_temp\dbbackup_log.txt
GOTO end

:end

06_run_script.bat inserts a row into the table; this command is executed 20 times, after each full backup and each set of 3 incremental backups:

"%SQLANY12%\bin32\dbisql.com"^
-c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
INSERT t1 VALUES ( DEFAULT );

07_run_dbbackup12_incremental.bat is called to create each incremental log backup:

ECHO ********************************************^
*********************************************>>backup\generation10\dbbackup_log.txt
ECHO Incremental dbbackup started >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt

REM ******************************************************************
REM Make sure a full backup exists
IF EXIST "backup\generation10\ddd12.db" ( GOTO check_full_log_backup ) ELSE ( GOTO full_backup_is_missing )

:check_full_log_backup
IF EXIST "backup\generation10\ddd12.log" ( GOTO full_backup_exists ) ELSE ( GOTO full_backup_is_missing )

:full_backup_is_missing
ECHO Create a full backup before an incremental backup. >>backup\generation10\dbbackup_log.txt
GOTO backup_failed

:full_backup_exists
REM ******************************************************************
REM Backup to generation10\logs subfolder
CD backup\generation10
MD logs
CD ..\..

"%SQLANY12%\bin32\dbbackup.exe"^
-c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
-o backup\generation10\dbbackup_log.txt^
-n^
-t^
-x^
backup\generation10\logs

IF ERRORLEVEL 1 GOTO backup_failed

REM ******************************************************************
REM Backup OK
DIR /S backup\generation10\*.* >>backup\generation10\dbbackup_log.txt
ECHO Incremental dbbackup OK >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt
GOTO end

:backup_failed
REM ******************************************************************
REM Backup failed
ECHO Error: Incremental dbbackup failed >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt
GOTO end

:end

08_run_script_to_display_rows.bat shows all the rows in the table:

"%SQLANY12%\bin32\dbisql.com"^
-c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
SELECT * FROM t1 ORDER BY pkey;

Here's what the table looks like after all the backups have been completed, before the restore process begins:

pkey
-----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

(20 rows)

Execution time: 0.051 seconds

Restore


09_stop_drop_database.bat makes way for the restore process by stopping and deleting the current database files:

"%SQLANY12%\bin32\dbstop.exe" -c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql" -y

PAUSE Wait until the database is stopped, then

ERASE /F ddd12.db

REM Note: The transaction log is not deleted.

In the real world most administrators won't delete the current database or log file no matter how dire the situation; they'll just move them to some other location. In particular, the current transaction log may be of some use, and that is certainly the case here.

10_restore_database.bat uses the COPY command to restore the ancient "generation 1" database backup, and then it runs dbsrv12.exe twenty-one times to apply all 40 of the transaction log backup files plus the current log:

ECHO ********************************************^
*********************************************>>backup\generation10\dbbackup_log.txt
ECHO Restore started >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt

COPY backup\generation1\ddd12.db

REM Note: -o writes to the dbbackup diagnostic file in this example.

REM The first dbsrv12 -ad backup\generation1 step is optional.
REM All the other dbsrv12 -ad steps are required.

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation1
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation1\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation2
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation2\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation3
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation3\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation4
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation4\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation5
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation5\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation6
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation6\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation7
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation7\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation8
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation8\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation9
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation9\logs

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation10
"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation10\logs

REM Use dbsrv12 -a to apply the most recent log.

"%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -a ddd12.log

REM ******************************************************************
REM Restore finished
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt

Here are some snippets from the diagnostic log messages produced by the 21 dbsrv12 -ad and dbsrv12 -a runs:

*****************************************************************************************
Restore started
Wed 04/06/2011
06:54 AM
I. 04/06 06:54:56. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/06 06:54:56. Developer edition, not licensed for deployment.
...
I. 04/06 06:54:57. Database recovery in progress
I. 04/06 06:54:57. Last checkpoint at Wed Apr 06 2011 06:51
I. 04/06 06:54:57. Checkpoint log...
I. 04/06 06:54:57. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation1\ddd12.log...
I. 04/06 06:54:57. Checkpointing...
I. 04/06 06:54:57. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:57. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:58. Recovery complete
...
I. 04/06 06:54:58. Database recovery in progress
I. 04/06 06:54:58. Last checkpoint at Wed Apr 06 2011 06:54
I. 04/06 06:54:58. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation1\logs\110406AA.log...
I. 04/06 06:54:58. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:59. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:59. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:59. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:54
I. 04/06 06:54:59. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation1\logs\110406AB.log...
I. 04/06 06:55:00. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:00. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:00. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation1\logs\110406AC.log...
I. 04/06 06:55:01. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Checkpointing...
I. 04/06 06:55:01. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:01. Recovery complete
...
I. 04/06 06:55:02. Database recovery in progress
I. 04/06 06:55:02. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:02. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation2\ddd12.log...
I. 04/06 06:55:02. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:03. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:03. Checkpointing...
I. 04/06 06:55:03. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:03. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:03. Recovery complete
...
I. 04/06 06:55:04. Database recovery in progress
I. 04/06 06:55:04. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:04. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation2\logs\110406AA.log...
I. 04/06 06:55:04. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:04. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:04. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:05. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:05. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation2\logs\110406AB.log...
I. 04/06 06:55:05. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:06. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:06. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:06. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:06. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation2\logs\110406AC.log...
I. 04/06 06:55:06. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:06. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:07. Checkpointing...
I. 04/06 06:55:07. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:07. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:07. Recovery complete
...
I. 04/06 06:55:08. Database recovery in progress
I. 04/06 06:55:08. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:08. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation3\ddd12.log...
I. 04/06 06:55:09. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:09. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:09. Checkpointing...
I. 04/06 06:55:09. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:10. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:10. Recovery complete
...
I. 04/06 06:55:11. Database recovery in progress
I. 04/06 06:55:11. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:11. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation3\logs\110406AA.log...
I. 04/06 06:55:11. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:11. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:11. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:12. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:12. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation3\logs\110406AB.log...
I. 04/06 06:55:12. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:12. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:12. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:13. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:13. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation3\logs\110406AC.log...
I. 04/06 06:55:13. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:13. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:13. Checkpointing...
I. 04/06 06:55:13. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:14. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:14. Recovery complete
...
I. 04/06 06:55:15. Database recovery in progress
I. 04/06 06:55:15. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:15. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation4\ddd12.log...
I. 04/06 06:55:15. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:15. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:15. Checkpointing...
I. 04/06 06:55:15. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:16. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:16. Recovery complete
...
I. 04/06 06:55:16. Database recovery in progress
I. 04/06 06:55:16. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:16. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation4\logs\110406AA.log...
I. 04/06 06:55:17. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:17. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:17. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:17. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:17. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation4\logs\110406AB.log...
I. 04/06 06:55:17. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation4\logs\110406AC.log...
I. 04/06 06:55:18. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:18. Checkpointing...
I. 04/06 06:55:19. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:19. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:19. Recovery complete
...
I. 04/06 06:55:20. Database recovery in progress
I. 04/06 06:55:20. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:20. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation5\ddd12.log...
I. 04/06 06:55:20. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:21. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:21. Checkpointing...
I. 04/06 06:55:21. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:21. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:21. Recovery complete
...
I. 04/06 06:55:22. Database recovery in progress
I. 04/06 06:55:22. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:22. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation5\logs\110406AA.log...
I. 04/06 06:55:22. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:22. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:22. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:23. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:23. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation5\logs\110406AB.log...
I. 04/06 06:55:23. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:23. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:23. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:23. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:24. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation5\logs\110406AC.log...
I. 04/06 06:55:24. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:24. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:24. Checkpointing...
I. 04/06 06:55:24. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:25. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:25. Recovery complete
...
I. 04/06 06:55:26. Database recovery in progress
I. 04/06 06:55:26. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:26. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation6\ddd12.log...
I. 04/06 06:55:26. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:26. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:26. Checkpointing...
I. 04/06 06:55:26. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:27. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:27. Recovery complete
...
I. 04/06 06:55:27. Database recovery in progress
I. 04/06 06:55:27. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:27. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation6\logs\110406AA.log...
I. 04/06 06:55:28. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:28. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:28. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:28. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:28. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation6\logs\110406AB.log...
I. 04/06 06:55:28. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:29. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:29. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:30. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:30. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation6\logs\110406AC.log...
I. 04/06 06:55:30. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:30. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:30. Checkpointing...
I. 04/06 06:55:30. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:31. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:31. Recovery complete
...
I. 04/06 06:55:32. Database recovery in progress
I. 04/06 06:55:32. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:32. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation7\ddd12.log...
I. 04/06 06:55:32. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:32. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:32. Checkpointing...
I. 04/06 06:55:32. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:32. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:32. Recovery complete
...
I. 04/06 06:55:33. Database recovery in progress
I. 04/06 06:55:33. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:33. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation7\logs\110406AA.log...
I. 04/06 06:55:33. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:34. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:34. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:34. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:34. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation7\logs\110406AB.log...
I. 04/06 06:55:34. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:35. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:35. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:35. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:35. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation7\logs\110406AC.log...
I. 04/06 06:55:35. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:36. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:36. Checkpointing...
I. 04/06 06:55:36. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:36. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:36. Recovery complete
...
I. 04/06 06:55:37. Database recovery in progress
I. 04/06 06:55:37. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:37. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation8\ddd12.log...
I. 04/06 06:55:37. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:37. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:37. Checkpointing...
I. 04/06 06:55:37. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:38. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:38. Recovery complete
...
I. 04/06 06:55:39. Database recovery in progress
I. 04/06 06:55:39. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:39. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation8\logs\110406AA.log...
I. 04/06 06:55:39. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:39. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:39. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:40. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:40. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation8\logs\110406AB.log...
I. 04/06 06:55:40. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:40. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:40. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:41. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:41. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation8\logs\110406AC.log...
I. 04/06 06:55:41. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:41. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:41. Checkpointing...
I. 04/06 06:55:41. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:42. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:42. Recovery complete
...
I. 04/06 06:55:42. Database recovery in progress
I. 04/06 06:55:42. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:42. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation9\ddd12.log...
I. 04/06 06:55:43. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:43. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:43. Checkpointing...
I. 04/06 06:55:43. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:43. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:43. Recovery complete
...
I. 04/06 06:55:44. Database recovery in progress
I. 04/06 06:55:44. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:44. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation9\logs\110406AA.log...
I. 04/06 06:55:44. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:45. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:45. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:45. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:45. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation9\logs\110406AB.log...
I. 04/06 06:55:45. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:46. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:46. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:46. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:46. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation9\logs\110406AC.log...
I. 04/06 06:55:46. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:47. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:47. Checkpointing...
I. 04/06 06:55:47. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:47. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:47. Recovery complete
...
I. 04/06 06:55:58. Database recovery in progress
I. 04/06 06:55:58. Last checkpoint at Wed Apr 06 2011 06:55
I. 04/06 06:55:58. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation10\ddd12.log...
I. 04/06 06:55:58. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:55:59. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:55
I. 04/06 06:56:00. Checkpointing...
I. 04/06 06:56:00. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:00. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:00. Recovery complete
...
I. 04/06 06:56:01. Database recovery in progress
I. 04/06 06:56:01. Last checkpoint at Wed Apr 06 2011 06:56
I. 04/06 06:56:01. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation10\logs\110406AA.log...
I. 04/06 06:56:01. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:01. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:01. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:02. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:02. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation10\logs\110406AB.log...
I. 04/06 06:56:02. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:02. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:02. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:03. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:03. Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110499 Recovering Across Multiple Backup Generations\backup\generation10\logs\110406AC.log...
I. 04/06 06:56:03. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:03. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:03. Checkpointing...
I. 04/06 06:56:03. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:04. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:04. Recovery complete
...
I. 04/06 06:56:05. Database recovery in progress
I. 04/06 06:56:05. Last checkpoint at Wed Apr 06 2011 06:56
I. 04/06 06:56:05. Transaction log: ddd12.log...
I. 04/06 06:56:05. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:05. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:05. Checkpointing...
I. 04/06 06:56:05. Starting checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:06. Finished checkpoint of "ddd12" (ddd12.db) at Wed Apr 06 2011 06:56
I. 04/06 06:56:06. Recovery complete
I. 04/06 06:56:06. Database server shutdown automatically after log applied
I. 04/06 06:56:06. Database server stopped at Wed Apr 06 2011 06:56
Wed 04/06/2011
06:56 AM

Here's the kind of message you will see if one of the log files is missing:

E. 04/05 15:30:34. Cannot open transaction log file -- Can't use log file "C:\ ... \backup\generation9\logs\110405AA.log" since it has been used more recently than the database file

Here's what the table looks like after the restore; all 20 rows have been restored, even the row that was inserted after the last backup (it was restored by the final dbsrv12 -a step in 10_restore_database.bat):

pkey
-----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

(20 rows)

Execution time: 0.039 seconds

Tip: It's tempting to move all the incremental log backup files into a single folder so only one dbsrv12 -ad step is required. However, it is possible for two different incremental log backup files to have the same file name if they were created on the same day with a full backup in between. That's because the yymmddXX is naming convention is restarted at yymmddAA after each full backup. In this demonstration, because everything happens in rapid succession on a single day, all 10 sets are named yymmddAA, BB and CC.

Finally, here is the 99_stop_drop_everything.bat command file that deletes everything so that 01_run_everything.bat run over again:

PAUSE Are you sure you want to delete all the files?

"%SQLANY12%\bin32\dbstop.exe" -c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql" -y

PAUSE Wait until the database is stopped, then

ERASE /F ddd12.db
ERASE /F *.log
ERASE /F dbsrv12_log_ddd12.txt
ERASE /F dbsrv12_log_fatal_ddd12.txt
RMDIR /S /Q backup

PAUSE

No comments: