Monday, April 25, 2011

Demonstrating Backup, Validation and Restore

This article updates the backup and recovery demonstration first shown in Recovering Across Multiple Backup Generations to include the database validation steps described in Validating Backups; it also includes the rapid-fire INSERT statements shown in Answer: Which log backups are required to restore a database?


The following demonstration shows how you can create, validate and preserve multiple generations of full online database and incremental online log backup files.

It then shows how you can go all the way back to the beginning and
  • restore the oldest backup (in this case generation 1 of 10), then

  • apply all the subsequent log files without losing any data.
These Help topics apply:
  • dbbackup, in particular the -n, -t and -x options,

  • dbvalid, and

  • dbsrv12 -ad to apply all the transaction logs in a single folder and stop.
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 and event to test success,

  • make 10 generations of backup files,

    • each consisting of a full backup

    • followed by three consecutive incremental log backups

    • with new rows being inserted in a rapid fire fashion before, during and after every backup, then

  • delete the current database,

  • restore the full database backup file from generation 1,

  • apply all the transaction log backup files

  • plus the current log file,

  • start the database and

  • show how all the inserted rows have been restored.
CALL 02_run_dbinit12.bat
CALL 03_run_dbspawn_dbsrv12.bat
CALL 04_run_script_to_create_table_and_event.bat

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

CALL 06_display_table.bat

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

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

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

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

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

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

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

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

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

REM Drop and restore...
CALL 08_stop_drop_database.bat
CALL 09_restore_database.bat
CALL 03_run_dbspawn_dbsrv12.bat

CALL 06_display_table.bat

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_script_to_create_table_and_event.bat runs a script to start the rapid-fire INSERT process:
"%SQLANY12%\bin32\dbisql.com"^
  -c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
  READ ENCODING Cp1252 04s_script_to_create_table_and_event.sql
04s_script_to_create_table_and_event.sql contains the script:
CREATE TABLE rapid (
   pkey   INTEGER NOT NULL DEFAULT AUTOINCREMENT PRIMARY KEY );

CREATE EVENT rapid_insert
HANDLER BEGIN
   WHILE 1 = 1 LOOP
      INSERT rapid VALUES ( DEFAULT );
      COMMIT;
      WAITFOR DELAY '00:00:00.1';
   END LOOP;
END;

TRIGGER EVENT rapid_insert;
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
SET ERRMSG=
DATE /T >>backup\generation_temp\dbbackup_log.txt
TIME /T >>backup\generation_temp\dbbackup_log.txt

REM ******************************************************************
ECHO ***** Step 1 Full backup >>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 SET ERRMSG=Step 1 Full backup failed with ERRORLEVEL = %ERRORLEVEL%
IF NOT "%ERRMSG%z" == "z" GOTO backup_failed

REM ******************************************************************
ECHO ***** Step 2 Apply log >>backup\generation_temp\dbbackup_log.txt

CD backup\generation_temp
MD validate
XCOPY ddd12.db validate /V /Q /K 
CD ..\..

REM Note: The -ad folder is relative to the folder containing the database.

"%SQLANY12%\bin32\dbsrv12.exe"^
  -o backup\generation_temp\dbbackup_log.txt^
  backup\generation_temp\validate\ddd12.db^
  -ad "%CD%\backup\generation_temp"

IF ERRORLEVEL 1 SET ERRMSG=Step 2 Apply log failed with ERRORLEVEL = %ERRORLEVEL%
IF NOT "%ERRMSG%z" == "z" GOTO backup_failed

REM ******************************************************************
ECHO ***** Step 3 Start read-only copy >>backup\generation_temp\dbbackup_log.txt

"%SQLANY12%\bin32\dbspawn.exe"^
  -f "%SQLANY12%\bin32\dbsrv12.exe"^
  -n readonlycopy^
  -o backup\dbsrv12_readonlycopy_log.txt^
  -r^
  backup\generation_temp\validate\ddd12.db 

IF ERRORLEVEL 1 SET ERRMSG=Step 3 Start read-only copy failed with ERRORLEVEL = %ERRORLEVEL%
IF NOT "%ERRMSG%z" == "z" GOTO backup_failed

REM ******************************************************************
ECHO ***** Step 4 Validate >>backup\generation_temp\dbbackup_log.txt

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

IF ERRORLEVEL 1 SET ERRMSG=Step 4 Validate failed with ERRORLEVEL = %ERRORLEVEL%

REM ******************************************************************
ECHO ***** Step 5 Stop read-only copy >>backup\generation_temp\dbbackup_log.txt

"%SQLANY12%\bin32\dbstop.exe"^
  -c "ENG=readonlycopy;DBN=ddd12;UID=dba;PWD=sql"^
  -y
IF NOT "%ERRMSG%z" == "z" GOTO backup_failed

REM ******************************************************************
ECHO ***** Step 6 Move files >>backup\generation_temp\dbbackup_log.txt

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 ..

REM ******************************************************************
REM Backup OK

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
ECHO ***** %ERRMSG% >>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
Line 4 of the full backup command file 05_run_dbbackup12_full.bat makes sure that the backup subfolder exists. Lines 5 and 6 delete the subfolder backup\generation_temp if it exists, and line 7 creates it again; this is where the new backup files will reside until the backup process has finished successfully.

The ECHO command on lines 10 and 11 writes a separator line to diagnostic log file dbbackup_log.txt. A new copy of dbbackup_log.txt is started for each full backup, and more records are added by this command file and by the later incremental log backups.

Lines 20 through 24 run dbbackup.exe to create a backup copy of the database and log files in the backup\generation_temp folder. The -x option tells dbbackup to delete and restart the primary transaction log file after the backup log file has been written. The -y option is not used because this command file doesn't overwrite any files.

The IF commands on lines 26 and 27 put an error message in an environment variable and skip to the end of the command file if dbbackup.exe failed.

The commands on line 32 through 35 make a second copy of the database backup file in a subfolder, and the dbsrv12 -ad command on lines 39 to 42 apply the transaction log backup file to that second copy of the database.

Tip: Use the %CD% current directory environment variable to construct an absolute path specification for the -ad option. Unlike other path and file specifications in SQL Anywhere, the dbsrv12 -ad option is relative to the folder containing the database file, rather than relative to the current folder or the folder where the dbsrv12 was started. If you make a mistake, you will see a less-than-helpful "unable to start database" message.

The dbsrv12 command on lines 50 through 55 starts the second copy of the database backup file in read-only mode so it can be validated by the command on lines 63 to 66.

The commands on lines 73 through 76 stop the read-only database and then check whether the previous database validation step was successful.

The commands on lines 81 through 93 preserve up to 10 most recent full backups:
  • The oldest subfolder (generation1) is deleted if it exists,

  • the 9 newer subfolders generation2 to 10 are given earlier names generation 1 through 9, if they exist, and

  • the newest subfolder generation_temp is renamed generation10.
The commands on lines 95 through 102 record a successful backup in the diagnostic log file, and the commands on lines 104 through 112 record a failure.

06_display_table.bat displays the current state of the rapid-fire INSERT process:
"%SQLANY12%\bin32\dbisql.com"^
  -c "ENG=ddd12;DBN=ddd12;UID=dba;PWD=sql"^
  SELECT COUNT(*), MAX ( pkey ) FROM rapid

PAUSE Note: COUNT should equal MAX
The output from that script shows that there are no gaps because of missing rows:
COUNT()     MAX(rapid.pkey)
---------------------------
209         209

(1 rows)

Execution time: 0.106 seconds

C:\...>PAUSE Note: COUNT should equal MAX
Press any key to continue . . .
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
SET ERRMSG=
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt

REM ******************************************************************
ECHO ***** Step 1 Check full backup >>backup\generation10\dbbackup_log.txt

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
SET ERRMSG=Step 1 Check full backup failed
GOTO backup_failed

:full_backup_exists
REM ******************************************************************
ECHO ***** Step 2 Incremental backup >>backup\generation10\dbbackup_log.txt

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 SET ERRMSG=Step 2 Incremental backup failed with ERRORLEVEL = %ERRORLEVEL%
IF NOT "%ERRMSG%z" == "z" GOTO backup_failed

REM ******************************************************************
ECHO ***** Step 3 Apply log >>backup\generation10\dbbackup_log.txt

REM Note: The -ad folder is relative to the folder containing the database.

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

IF ERRORLEVEL 1 SET ERRMSG=Step 3 Apply logs failed with ERRORLEVEL = %ERRORLEVEL%
IF NOT "%ERRMSG%z" == "z" 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
ECHO ***** %ERRMSG% >>backup\generation10\dbbackup_log.txt
DATE /T >>backup\generation10\dbbackup_log.txt
TIME /T >>backup\generation10\dbbackup_log.txt
GOTO end

:end
Lines 1 through 6 of the incremental log backup command file 07_run_dbbackup12_incremental.bat assume that a full backup already exists in the backup\generation10 subfolder, so it's OK to continue writing information to the diagnostic log file dbbackup_log.txt.

Lines 11 through 18 put that assumption to the test by ensuring the backup file copies of the database and transaction log exist in the backup\generation10 subfolder; if they don't exist, there's really no point creating a further incremental log backup.

Lines 24 through 26 make sure that the backup\generation10\logs subfolder exists. It might exist already, and that's ok; unlike the full backup command file, this command file always writes the new incremental log backup file to the same subfolder rather than creating a new subfolder.

Lines 28 through 34 run dbbackup.exe to create an incremental backup copy of the transaction log file in the backup\generation_temp\logs folder. The
  • -n option tells dbbackup to rename the backup copy of the transaction log file from ddd12.log to yymmddxx.log, where yymmdd is the date and xx is AA, AB, AC, ...,

  • the -t option to backup the transaction log file, not the database file, and

  • the -x option tells dbbackup to delete and restart the primary transaction log file after the backup log file has been written.

  • The -y option is not used because this command file doesn't overwrite any files.
The IF commands on lines 36 and 37 skip to the end of the command file if dbbackup.exe failed.

The dbsrv12 -ad command on lines 44 through 47 check the validity of the new transaction log backup by applying it to the second copy of the database backup file what was created in the previous run of 05_run_dbbackup12_full.bat.

Tip: Use the %CD% current directory environment variable to construct an absolute path specification for the -ad option. Unlike other path and file specifications in SQL Anywhere, the dbsrv12 -ad option is relative to the folder containing the database file, rather than relative to the current folder or the folder where the dbsrv12 was started. If you make a mistake, you will see a less-than-helpful "unable to start database" message.

The commands on lines 52 through 63 record a successful backup in the diagnostic log file, and the commands on lines 61 through 69 record a failure.

Restore

08_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.
09_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 Note: -ad is relative to the folder containing the database.

"%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 
Sun 04/24/2011 
12:24 PM
I. 04/24 12:24:25. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:25. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:25. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:25. Database recovery in progress
I. 04/24 12:24:25.     Last checkpoint at Sun Apr 24 2011 12:15
I. 04/24 12:24:25.     Checkpoint log...
I. 04/24 12:24:25.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation1\ddd12.log...
I. 04/24 12:24:25.     Checkpointing...
I. 04/24 12:24:25. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:25. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:25. Recovery complete
I. 04/24 12:24:25. Database server shutdown automatically after log applied
I. 04/24 12:24:25. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:26. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:26. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:26. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:26. Database recovery in progress
I. 04/24 12:24:26.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:26.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation1\logs\110424AA.log...
I. 04/24 12:24:26. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:26. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:26. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:27. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:27.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation1\logs\110424AB.log...
I. 04/24 12:24:27. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:27. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:27. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:27. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:28.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation1\logs\110424AC.log...
I. 04/24 12:24:28. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:28. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:28.     Checkpointing...
I. 04/24 12:24:28. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:28. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:28. Recovery complete
I. 04/24 12:24:28. Database server shutdown automatically after log applied
I. 04/24 12:24:28. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:28. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:28. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:29. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:29. Database recovery in progress
I. 04/24 12:24:29.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:29.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation2\ddd12.log...
I. 04/24 12:24:29. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:30. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:30.     Checkpointing...
I. 04/24 12:24:30. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:30. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:30. Recovery complete
I. 04/24 12:24:30. Database server shutdown automatically after log applied
I. 04/24 12:24:30. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:30. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:30. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:30. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:30. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:31. Database recovery in progress
I. 04/24 12:24:31.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:31.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation2\logs\110424AA.log...
I. 04/24 12:24:31. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:31. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:31. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:31. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:31.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation2\logs\110424AB.log...
I. 04/24 12:24:31. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation2\logs\110424AC.log...
I. 04/24 12:24:32. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:32.     Checkpointing...
I. 04/24 12:24:32. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:33. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:33. Recovery complete
I. 04/24 12:24:33. Database server shutdown automatically after log applied
I. 04/24 12:24:33. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:33. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:33. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:33. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:33. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:33. Database recovery in progress
I. 04/24 12:24:33.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:33.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation3\ddd12.log...
I. 04/24 12:24:33. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:34. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:34.     Checkpointing...
I. 04/24 12:24:34. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:34. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:34. Recovery complete
I. 04/24 12:24:34. Database server shutdown automatically after log applied
I. 04/24 12:24:34. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:34. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:34. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:34. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:34. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:35. Database recovery in progress
I. 04/24 12:24:35.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:35.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation3\logs\110424AA.log...
I. 04/24 12:24:35. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:35. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:35. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:35. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:35.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation3\logs\110424AB.log...
I. 04/24 12:24:36. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation3\logs\110424AC.log...
I. 04/24 12:24:36. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:36.     Checkpointing...
I. 04/24 12:24:37. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:37. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:37. Recovery complete
I. 04/24 12:24:37. Database server shutdown automatically after log applied
I. 04/24 12:24:37. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:37. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:37. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:37. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:37. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:38. Database recovery in progress
I. 04/24 12:24:38.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:38.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation4\ddd12.log...
I. 04/24 12:24:38. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:38. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:38.     Checkpointing...
I. 04/24 12:24:38. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:38. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:38. Recovery complete
I. 04/24 12:24:38. Database server shutdown automatically after log applied
I. 04/24 12:24:38. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:39. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:39. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:39. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:39. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:39. Database recovery in progress
I. 04/24 12:24:39.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:39.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation4\logs\110424AA.log...
I. 04/24 12:24:39. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:39. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:39. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:40. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:40.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation4\logs\110424AB.log...
I. 04/24 12:24:40. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:40. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:40. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:40. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:41.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation4\logs\110424AC.log...
I. 04/24 12:24:41. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:41. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:41.     Checkpointing...
I. 04/24 12:24:41. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:41. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:41. Recovery complete
I. 04/24 12:24:41. Database server shutdown automatically after log applied
I. 04/24 12:24:41. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:42. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:42. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:42. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:42. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:42. Database recovery in progress
I. 04/24 12:24:42.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:42.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation5\ddd12.log...
I. 04/24 12:24:42. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:42. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:42.     Checkpointing...
I. 04/24 12:24:42. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:43. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:43. Recovery complete
I. 04/24 12:24:43. Database server shutdown automatically after log applied
I. 04/24 12:24:43. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:43. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:43. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:43. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:43. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:43. Database recovery in progress
I. 04/24 12:24:43.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:43.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation5\logs\110424AA.log...
I. 04/24 12:24:43. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation5\logs\110424AB.log...
I. 04/24 12:24:44. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:44. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation5\logs\110424AC.log...
I. 04/24 12:24:45. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45.     Checkpointing...
I. 04/24 12:24:45. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:45. Recovery complete
I. 04/24 12:24:45. Database server shutdown automatically after log applied
I. 04/24 12:24:46. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:46. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:46. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:46. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:46. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:46. Database recovery in progress
I. 04/24 12:24:46.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:46.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation6\ddd12.log...
I. 04/24 12:24:46. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:46. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:46.     Checkpointing...
I. 04/24 12:24:46. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:47. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:47. Recovery complete
I. 04/24 12:24:47. Database server shutdown automatically after log applied
I. 04/24 12:24:47. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:47. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:47. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:47. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:47. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:47. Database recovery in progress
I. 04/24 12:24:47.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:47.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation6\logs\110424AA.log...
I. 04/24 12:24:47. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:48. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:48. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:48. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:48.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation6\logs\110424AB.log...
I. 04/24 12:24:48. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:48. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation6\logs\110424AC.log...
I. 04/24 12:24:49. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49.     Checkpointing...
I. 04/24 12:24:49. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:49. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:50. Recovery complete
I. 04/24 12:24:50. Database server shutdown automatically after log applied
I. 04/24 12:24:50. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:50. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:50. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:50. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:50. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:50. Database recovery in progress
I. 04/24 12:24:50.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:50.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation7\ddd12.log...
I. 04/24 12:24:50. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:51. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:51.     Checkpointing...
I. 04/24 12:24:51. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:51. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:51. Recovery complete
I. 04/24 12:24:51. Database server shutdown automatically after log applied
I. 04/24 12:24:51. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:51. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:51. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:51. Automatic tuning of multiprogramming level is enabled
I. 04/24 12:24:51. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:51. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:52. Database recovery in progress
I. 04/24 12:24:52.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:52.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation7\logs\110424AA.log...
I. 04/24 12:24:52. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:52. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:52. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:52. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:52.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation7\logs\110424AB.log...
I. 04/24 12:24:52. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation7\logs\110424AC.log...
I. 04/24 12:24:53. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53.     Checkpointing...
I. 04/24 12:24:53. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:53. Recovery complete
I. 04/24 12:24:54. Database server shutdown automatically after log applied
I. 04/24 12:24:54. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:54. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:54. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:54. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:54. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:54. Database recovery in progress
I. 04/24 12:24:54.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:54.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation8\ddd12.log...
I. 04/24 12:24:54. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:55. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:55.     Checkpointing...
I. 04/24 12:24:55. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:55. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:55. Recovery complete
I. 04/24 12:24:55. Database server shutdown automatically after log applied
I. 04/24 12:24:55. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:55. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:55. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:55. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:55. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:56. Database recovery in progress
I. 04/24 12:24:56.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:56.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation8\logs\110424AA.log...
I. 04/24 12:24:56. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:56. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:56. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:56. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:56.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation8\logs\110424AB.log...
I. 04/24 12:24:56. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation8\logs\110424AC.log...
I. 04/24 12:24:57. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:57.     Checkpointing...
I. 04/24 12:24:57. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:58. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:58. Recovery complete
I. 04/24 12:24:58. Database server shutdown automatically after log applied
I. 04/24 12:24:58. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:58. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:58. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:58. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:58. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:24:58. Database recovery in progress
I. 04/24 12:24:58.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:24:58.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation9\ddd12.log...
I. 04/24 12:24:58. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:59. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:59.     Checkpointing...
I. 04/24 12:24:59. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:59. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:59. Recovery complete
I. 04/24 12:24:59. Database server shutdown automatically after log applied
I. 04/24 12:24:59. Database server stopped at Sun Apr 24 2011 12:24
I. 04/24 12:24:59. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:24:59. Developer edition, not licensed for deployment.
...
I. 04/24 12:24:59. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:24
I. 04/24 12:24:59. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:25:00. Database recovery in progress
I. 04/24 12:25:00.     Last checkpoint at Sun Apr 24 2011 12:24
I. 04/24 12:25:00.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation9\logs\110424AA.log...
I. 04/24 12:25:00. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:00. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:00. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:00. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:00.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation9\logs\110424AB.log...
I. 04/24 12:25:01. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation9\logs\110424AC.log...
I. 04/24 12:25:01. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:01.     Checkpointing...
I. 04/24 12:25:02. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:02. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:02. Recovery complete
I. 04/24 12:25:02. Database server shutdown automatically after log applied
I. 04/24 12:25:02. Database server stopped at Sun Apr 24 2011 12:25
I. 04/24 12:25:02. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:25:02. Developer edition, not licensed for deployment.
...
I. 04/24 12:25:02. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:02. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:25:12. Database recovery in progress
I. 04/24 12:25:12.     Last checkpoint at Sun Apr 24 2011 12:25
I. 04/24 12:25:12.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation10\ddd12.log...
I. 04/24 12:25:12. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:13. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:13.     Checkpointing...
I. 04/24 12:25:13. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:13. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:13. Recovery complete
I. 04/24 12:25:13. Database server shutdown automatically after log applied
I. 04/24 12:25:13. Database server stopped at Sun Apr 24 2011 12:25
I. 04/24 12:25:13. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:25:13. Developer edition, not licensed for deployment.
...
I. 04/24 12:25:13. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:13. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:25:14. Database recovery in progress
I. 04/24 12:25:14.     Last checkpoint at Sun Apr 24 2011 12:25
I. 04/24 12:25:14.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation10\logs\110424AA.log...
I. 04/24 12:25:14. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:14. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:14. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:14. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:14.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation10\logs\110424AB.log...
I. 04/24 12:25:14. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:14. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15.     Transaction log: C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\backup\generation10\logs\110424AC.log...
I. 04/24 12:25:15. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15.     Checkpointing...
I. 04/24 12:25:15. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:15. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:16. Recovery complete
I. 04/24 12:25:16. Database server shutdown automatically after log applied
I. 04/24 12:25:16. Database server stopped at Sun Apr 24 2011 12:25
I. 04/24 12:25:16. SQL Anywhere Network Server Version 12.0.1.3298 I. 04/24 12:25:16. Developer edition, not licensed for deployment.
...
I. 04/24 12:25:16. Starting database "ddd12" (C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:16. Performance warning: Database file "C:\$ blogs and websites\blog SQLAnywhere\20110425 Demonstrating Backup, Validation and Restore\ddd12.db" consists of 2 disk fragments
I. 04/24 12:25:16. Database recovery in progress
I. 04/24 12:25:16.     Last checkpoint at Sun Apr 24 2011 12:25
I. 04/24 12:25:16.     Transaction log: ddd12.log...
I. 04/24 12:25:16. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:17. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:17.     Checkpointing...
I. 04/24 12:25:17. Starting checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:17. Finished checkpoint of "ddd12" (ddd12.db) at Sun Apr 24 2011 12:25
I. 04/24 12:25:17. Recovery complete
I. 04/24 12:25:17. Database server shutdown automatically after log applied
I. 04/24 12:25:17. Database server stopped at Sun Apr 24 2011 12:25
Sun 04/24/2011 
12:25 PM

The output from 06_display_table.bat shows there are no gaps after the restore:
SELECT COUNT(*), MAX ( pkey ) FROM rapid
COUNT()     MAX(rapid.pkey)
---------------------------
4064        4064

(1 rows)

Execution time: 0.023 seconds

C:\..>PAUSE Note: COUNT should equal MAX
Press any key to continue . . .
Here's the kind of message you will see if one of the log files is missing:
I. 04/24 12:25:16. 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
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 ddd12.log
ERASE /F dbsrv12_log_ddd12.txt
ERASE /F dbsrv12_log_fatal_ddd12.txt
RMDIR /S /Q backup

PAUSE

13 comments:

HG1735 said...

Why we have to write IF NOT "%ERRMSG%z" == "z" GOTO backup_failed insted of just "%ERRMSG%" == ""

Breck Carter said...

"%ERRMSG%" == "" is probably OK as long as you remember to put "quotes" around %ERRMSG%, whereas %ERRMSG% == "" will crash out when %ERRMSG% is empty. Note that %ERRMSG%z == z will work... it's a bizarre language :)

HG1735 said...
This comment has been removed by the author.
HG1735 said...

thank your help and this lovely article :) and I want to know few more about few more details. In restore why are applying all the previous logs can't we just apply logs for version 10 only?

and for generation 10 you already applied "%SQLANY12%\bin32\dbsrv12.exe" -o backup\generation10\dbbackup_log.txt ddd12.db -ad backup\generation10

then why are we again applying ddd12.log in line

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

Breck Carter said...

> why are applying all the previous logs can't we just apply logs for version 10 only?

Because the log backups are "incremental", not "differential". After each log backup is created, the active log is truncated (dbbackup -x) so each log backup contains a unique, different set of data. Caution: Do not use dbbackup -x if you are using mirroring (high availability)... and be careful about EVERYTHING log-related if you are running dbremote.exe or dbmlsync.exe on this database.

If you don't use dbbackup -x, the log backup file will be "differential": the latest log backup will contain the difference between the full backup and the current database.

NOTE: The restore example is unusually extreme; it restores the original generation1 full backup, and ignores the subsequent full backups. It then applies all 20 (not 40) subsequent incremental log files.

Breck Carter said...

> why are we again applying ddd12.log

The first paragraph of this blog post contains a link to this post worth reading: Answer: Which log backups are required to restore a database?

APOLOGY: The code is garbled because Google changed how blogger works and I haven't fixed the article.

Anyway, it's OK to omit an empty backup file, BUT you cannot predict which backup files (if any) are empty.

It is NOT OK to omit a non-empty backup file.

Conversely, it is OK to apply an empty backup file... so the safe rule is to apply ALL the log files created between the origin database and the current point in time.

HG1735 said...

> why are applying all the previous logs can't we just apply logs for version 10 only?

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

here you are creating full backup for generation 10 so can't we just use full backup of gen.10 plus incremental backups of gen.10 to restore? Am I missing anything here?

>After each log backup is created, the active log is truncated (dbbackup -x) so each log backup contains a unique, different set of data.
I'm confused with few things.

My understanding : when we create backup with -x, first log of original database will be applied to original database then logs will be truncated(now original log file is empty) then database backup will begin.

Now while it's backing , if there are any transcations all those will be logged.and when backup process finishes this updated log will be copied to the back up database location.

Is it correct ?

o

HG1735 said...

I'm not able to understand why are we applying log backup of previous version shouldn't those logs apply to database when we do full backup after them like logs of generation 9 will be apply to database when we start full backup of generation 10.

Thanks for your precious time and effort :)

Breck Carter said...

> can't we just use full backup of gen.10 plus incremental backups of gen.10 to restore?

Yes... if you trust the gen 10 full backup. The article shows how to start with the very old gen 1 full backup... if you will never need to do that, then don't create 10 generations :)

That's also why I said this in an earlier reply: NOTE: The restore example is unusually extreme; it restores the original generation1 full backup, and ignores the subsequent full backups. It then applies all 20 (not 40) subsequent incremental log files.

> My understanding : when we create backup with -x, first log of original database
> will be applied to original database then logs will be truncated(now original
> log file is empty) then database backup will begin.
> Now while it's backing , if there are any transcations all those will be logged
> and when backup process finishes this updated log will be copied to the back up database location.

Dbbackup is a utility which copies the contents of the log file. Dbbackup does not "apply" anything.

Dbsrv*.exe applies log data to the database during the initial recovery stage. The dbsrv* -a option controls that behavior.

The explanations in the article might be confusing, and they might even be wrong, but please note the code ran successfully and it was pasted as-is with no edits.

HG1735 said...

I am also creating a online backup from daily local backups so I won't need earlier generations I guess. I just want to restore from latest full backup.
Now after your last answer my mind cleared a bit and I think that following two commands would do that job.Please correct me If I'm wrong.


dbsrv17.exe -o backup\generation_temp\dbbackup_log.txt first.db -ad backup\generation_temp
dbsrv17.exe -o backup\generation_temp\dbbackup_log.txt first.db -ad backup\generation_temp\logs

Unknown said...

Thank you so much for this great article.

In 05_run_dbbackup12_full.bat you have step 3 which is to spawn an instance of the server with a read-only copy of the full backup and then, in step 4, run dbvalid on that readonly db

Question: dbvalid.exe seems to be able to connect "off-line" copies of the full backup file (i.e. backup\generation_temp\validate\ddd12.db). Is there a need to use spawned server instance.
i.e. if we change the connection string in lines 63 - 66 as follows:

"%SQLANY12%\bin32\dbvalid.exe"^
-c "UID=dba;PWD=sql;DBF=backup\generation_temp\validate\ddd12.db"^
-o backup\generation_temp\dbbackup_log.txt^
-q

Can we then remove Step 3 entirely: "%SQLANY12%\bin32\dbspawn.exe" etc... ?
Or is it still better practice to start the db on a spawned service?

Thanks.

Philip

Breck Carter said...

@Philip: The V12 Help says this "If running the Validation utility starts a database automatically, the database starts in read-only mode."

That implies dbvalid will autostart a server, not directly read the database file.

I have not tested this feature, BUT you are probably correct: You probably do not have to separately start a server to start the database before running dbvalid.

Thanks for the tip! I will use it in future backup setups.

Unknown said...

Thanks Breck.
Ahh, you're right. It would make sense that a server instance would need to be running for validation.