The ibec_RestoreDatabase starts the restore process using the server Services Manager. It returns NULL if the restore process succeeded, otherwise it returns an error message.
ibec_RestoreDatabase also supports FIX_FSS_DATA and FIX_FSS_METADATA options which are equal to the corresponding gbak keys (see example 4 below).
function ibec_RestoreDatabase(BackupFiles : string; RestoreTo : string; Options : string; CallbackBlock : string) : variant;
BackupFiles | List of backup files delimited with semicolon. |
---|---|
RestoreTo | List of database files delimited with semicolon. Each list item (in case of restore to multiple files) should be in format <db_file_name>=<file_size_in_pages>. |
<db_file_name> | Full connection string to the database including server name or IP address if the database is located on a remote server (for example, 123.123.123.123:D:\DATA\MyDB.fdb). |
<file_size_in_pages> | Size of the database file in pages (!). |
Options | List of restore options delimited with semicolon. Possible options are: |
USER=<user_name> | User name. |
PASSWORD=<password> or PAS=<password> | Password. |
CLIENTLIB=<client_lib_name> | Name of clientlib dll; gds32.dll will be used if not specified. |
RestoreFromClient | This specification used a local backup file while restoring a database. |
PAGESIZE=<page_size> or PAGE_SIZE=<page_size> | Page size of the restored database. |
PAGEBUFFERS=<buffers> or BUFFERS=<buffers> or BU=<buffers> | Overrides page buffers default. |
ROLE | To use an SQL role specify it in the option string: Role=SOMEROLE. |
INACTIVE (or DEACTIVATEINDEXES, or I) | Deactivate indexes during restore. |
KILL (or NOSHADOWS, or K) | Restore without creating shadows. |
NO_VALIDITY (or NOVALIDITY, or N) | Do not restore database validity conditions. |
ONE_AT_A_TIME (or ONEATATIME, or O) | Restore one table at a time (commit after each table). |
REPLACE_DATABASE (or REPLACEDATABASE, or REP) | Replace database from backup file. |
CREATE_DATABASE (or CREATEDATABASE, or C) | Create database from backup file. |
USE_ALL_SPACE (or USEALLSPACE, or USE) | Do not reserve space for record versions. |
META_DATA (or METADATA, or M) | Restore metadata only. |
LOGFILE=<log_file_name> | Name of output log file. |
NoDBTriggers | This prevents database/transaction triggers from firing during a backup/restore. |
WireCompression | To enable compression it is necessary to specify 'WireCompression=TRUE' (or just 'WireCompression') in the options string. (Both client and server must support WireCompression.) |
CallbackBlock | Callback IBEBlock which will be executed for each output line. The callback IBEBlock must have at least one input parameter, which will be used to pass an output line within it. If there is no callback block use NULL or an empty string as a value of this parameter. |
Restore database from single backup file with no output (silent mode): execute ibeblock as begin res = ibec_RestoreDatabase('E:\TESTDB.FBK', 'LOCALHOST:E:\TESTDB.FBK', 'ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll; Password=masterkey; User=SYSDBA;OneAtATime; PageSize=8192; C', null); if (res is null) then ibec_ShowMessage('Restore completed successfully'); else ibec_ShowMessage(res); end
Restore database from multiple backup files to single database file with full output: execute ibeblock as begin cbb = 'execute ibeblock (LogStr variant) as begin ibec_Progress(LogStr); end'; res = ibec_RestoreDatabase('E:\TESTDB_1.FBK; E:\TESTDB_2.FBK; E:\TESTDB_3.FBK', 'LOCALHOST:E:\TESTDB.FBK', 'ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll; Password=masterkey; User=SYSDBA; C; REP; O; LogFile=E:\Restore.log', cbb); if (res is null) then ibec_ShowMessage('Restore completed successfully'); else ibec_ShowMessage(res); end
Restore database from multiple backup files to multiple database files with full output: execute ibeblock as begin cbb = 'execute ibeblock (LogStr variant) as begin ibec_Progress(LogStr); end'; res = ibec_RestoreDatabase('E:\TESTDB_1.FBK; E:\TESTDB_2.FBK; E:\TESTDB_3.FBK', 'LOCALHOST:E:\TESTDB1.FBK=20000; LOCALHOST:E:\TESTDB2.FBK=20000; LOCALHOST:E:\TESTDB3.FBK', 'ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll; Password=masterkey; User=SYSDBA; C; REP; O; BU=3000; LogFile=E:\Restore.log', cbb); if (res is null) then ibec_ShowMessage('Restore completed successfully'); else ibec_ShowMessage(res); end
res = ibec_RestoreDatabase('D:\NEWBLOCKDEMO.FBK',
'localhost:D:\NEWBLOCKDEMO.FB2', 'ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll; password=masterkey; user=SYSDBA; OneAtATime; PageSize=8192; fix_fss_data=WIN1251; fix_fss_metadata=WIN1251', null);