正文

比较三种数据库系统的命令行备份和恢复工具2006-08-29 23:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/clever101/17966.html

分享到:

                                                                   朱金灿

       最近用VC做了一个程序,需要调用常用数据库系统的备份和恢复功能。下面谈谈我这方面的体会。

         Kingbase的备份和恢复工具(我指的是命令行工具)做得实在不好。开始看了帮助文档我觉得备份命令还是很清晰的,但用起来就不是那么回事了。下面我用例子来说明:
打开开始菜单的运行对话框,输入Kingbase的备份命令行:

sys_dump.exe -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST

单击确定后出现一个警告对话框:Windows找不到sys_dump.exe,请确定文件名是否正确......

正确的应是在运行对话框输入:
"C:\program file\Basesoft\KingbaseES\4.1\bin\sys_dump.exe" -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST

在运行对话框输入“cmd”打开命令提示符界面,输入sys_dump.exe -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST
也是说sys_dump.exe不是可执行文件,必须输入命令:
"C:\program file\Basesoft\KingbaseES\4.1\bin\sys_dump.exe" -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST


如果用户单单是运行这样的命令进行备份,也没什么,不就多加一个路径吗?多输入几个字符而已。可是对于开发Kingbase应用程序的程序员来说,情况就不一样了。比如我用VC开发一个程序调用Kingbase的备份功能:
CString strCmdLine;
strCmdLine.Format("\"C:\\Program File\\Basesoft\\KingbaseES\\4.1\\bin\\sys_dump\" -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST");
::CreatProcess(NULL,
(LPSTR)(LPCTSTR)strCmdLine,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
);

           但是这样的命令行无疑有很大的局限性的。如果用户没有把Kingbase装在C:\Program File里,那我的应用程序岂不是成了废物?难道我还有开发一个文件查找模块,把sys_dump的路径找出来?这无疑大大限制了应用程序的通用性。这算不算Kingbase的缺陷呢。我用的是KingbaseES4.1,操作系统是Windows XP sp2.

           在这方面MySQL做的稍微好一点。在运行对话框输入mysqldump --host=168.168.168.59 --user=root --password=828707 student>E:\114.dmp

一个控制台界面一闪而过,但是并不能备份成功,但也没有出现一个错误提示框说Windows没有找到mysqldump.那么如何使用命令行备份mysql数据库呢?先在运行对话框输入"cmd"打开命令提示符:然后输入命令:mysqldump --host=168.168.168.59 --user=root --password=828707 student>E:\114.dmp,回车后就可以备份成功了。

         因此通过应用程序调用MySQL的备份功能就要费一番周折了。
CString strCmdLine;
strCmdLine.Format("cmd.exe \k \"mysqldump --host=168.168.168.59 --user=root --password=828707 student>E:\114.dmp\"");
::CreatProcess(NULL,
(LPSTR)(LPCTSTR)strCmdLine,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
);

我使用的是MySQL Administrator V1.1, MySQL Query Browser V1.1, MySQL Server V5.0,操作系统是Windows XP sp2.

在这方面做得最好的是Oracle数据库。直接在运行对话框输入:
EXP system/828707@stu full=y inctype=complete file=E:\stu.dmp

单击确定。ok,备份成功。

这样通过应用程序调用ORACLE的备份功能就简单多了。
CString strCmdLine;
strCmdLine.Format("EXP system/828707@stu full=y inctype=complete file=E:\stu.dmp");
::CreatProcess(NULL,
(LPSTR)(LPCTSTR)strCmdLine,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
);

使用环境:OraDb10g,OraClient10g,操作系统是Windows XP sp2.

        在我看来,dos界面的程序存在的必要性在于应用程序是否可以方面调用他们。一般用户应该不会放弃使用图形界面去学习使用什么命令行。如果这些dos界面的程序不能满足开发的需要,那它们还有存在的必要性吗?

阅读(4177) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册