如何用程序控制自动对INTERBASE 数据库进行备份和恢复(100分)

  • 主题发起人 主题发起人 sunqi
  • 开始时间 开始时间
S

sunqi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在NT 启动时自动对INTERBASE 数据库进行备份和恢复。以提高数据库
性能和安全。
 
一.把你想备份的数据库对应的的文件*.gdb复制一下就行了,这样做可能空间
时间有点浪费,不过可以用现成的压缩软件打一包就行了.
二.等你的interbase启动后,把数据库中的表一个一个的batchmove到另一个库
中.

BTW:虽然没有实际应用过,我想interbase应当比较安全的吧. 请有实际经验的
大侠们发表高见.
 
安全只是相对的。只要把gdb拷到其它interbase的server上,用sysdba
就可以访问了。从这个意义上说,它的安全性还不如paradox. :)
不过interbase server的可靠性还可以,我的一个项目用paradox索引坏
是家常便饭,更新为interbase后两个月了,还没有发生这个问题。 :)

BTW: interbase有没有DOS Client?
 
在整理数据库时正好做了注释:
编者按:据我所知,InterBase 没有提供相关的 SQL 语句和相关 API 函数来实现数据备份,所以一般备份可采用以下方法:
1、直接复制文件,Interbase数据库的形式比较简单,一个库就是一个文件(一般为*.GDB),复制后,你可使用任何压缩方法对文件进行压缩。这是一种比较灵活、方便的方法。但是,如果Interbase以后版本对数据库格式有较大改变(虽然可能性不大),那么你将重新修改你的应用程序。
2、使用 Tquery 或者 TbatchMove ,把数据复制到其它数据库或表,其优点是:你可以有选择性的备份数据。但是,如此所有的其它数据库对象会丢失(存储过程、触发器等)。除非你仅对数据进行备份,否则不推荐用此方法。
3、Interbase Server Manage是直接使用GBAK32.DLL实现数据备份的。但是,我没有找到相关文档说明如何调用之,一个变通的方法是用 InterBase/bin目录下的 GBak.exe 实用程序,可以直接调用:
备份:
gbak [-B] [options] database target
恢复:
gbak {-C|-R} [options] source database
恢复多个文件:
gbak {-C|-R} [options] source primary m secondary1 [ n1 secondary2 [ n2]]
这是比较标准的方法,一般推荐使用此方法。关于如何调用GBAK.EXE的详细说明,请参阅《InterBase 5 Operations Guide》一书中的 Database backup and restore 一章 GBK Command line utility. 一节。

 
CJ 的回答很正确,我还有几个问题,我发现在没有做数据整理前,速度很慢,但
做完数据的备份和恢复后速度明显提高,是为什么,我想是索引的问题,不知DELPHI
中的REINDEX 的方法对INTERBASE 是否有用 ,另外CJ 提到的参阅《InterBase 5 Operations Guide》一书 不知哪里有,我对INTERBASE 还是感觉很好的。
多谢CJ ,请再赐教
 
Interbase 5 Operations Guide 在:
C:/Program Files/Interbase Corp/Interbase/Doc/OperationsGuide.PDF

 
接受答案
 
>接受答案
给谁?
 
对呀,这题我答的不错呀:)))
 
我上此都给分了,但没有显示出来 ,对不起 CJ 的回答很正确
 
重做一遍吧。
 
多人接受答案了。
 
后退
顶部