这么简单的备份问题,真的没人能回答上来吗????着急啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

taoguang2 2003-06-23 09:51:40
long li_result
string ls_db
ls_db=getcurrentdirectory()+"\fd.db"
li_result=run("dbbackup -c ~"uid=dba;pwd=sql; dbf="+ls_db+ "~"" + sle_1.text)
messagebox("",string(li_result))
If li_result <> 1 Then
MessageBox('提示','保存失败!')
End If
我是用命令的方法把当前数据库备份到指定目录下,可我测试一下li_result,结果为1,可为什么没有备份下来啊?
...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
killerdanny 2003-06-23
  • 打赏
  • 举报
回复
integer li_FileNum

li_FileNum = FileCopy ("c:\Program Files\emotor汽修管理软件(Emotor V1.00)\database\Emotordb.db" , "C:\Emotordb.db", FALSE)
taoguang2 2003-06-23
  • 打赏
  • 举报
回复
呵呵,我的数据库就是“非典.db”啊
我在做非典疫情管理软件呢,就剩下备份了
SanMaker 2003-06-23
  • 打赏
  • 举报
回复
学习
james_lq 2003-06-23
  • 打赏
  • 举报
回复
呵呵,支持。
不过,你的数据库怎么用“fd”呀,我一看就想到“非点”
taoguang2 2003-06-23
  • 打赏
  • 举报
回复
那用什么方法判断备份是否成功呢???????????????
devil_heart 2003-06-23
  • 打赏
  • 举报
回复
同意楼上的,不能用run()的返回值来判断是否备份成功!
Thinkinger 2003-06-23
  • 打赏
  • 举报
回复
转帖一篇:

备份:
string ls_path ,ls_use
INT li_net

Ls_path = sle_backpath.text
IF ls_path = "" THEN
Messagebox('系统提示',"请先指定要备份的数据文件的名称! ")
RETURN
END IF
IF FileExists ( ls_path ) THEN
li_net=Messagebox('信息','提示:系统发现在"'+ls_path+'"目录下已经存在一个同名的文件.~r~n~n要替换它吗?',Question!,YesNo!)
IF li_net= 1 THEN
FileDelete ( ls_path )
ELSE
END IF
END IF
SetPointer(HourGlass!)//---开始备份---
This.Enabled = FALSE
cb_restore.Enabled = FALSE

ls_use = 'EXEC'+'('+"'USE '" + sqlca.database+')'
EXECUTE IMMEDIATE :ls_use ;

SQLCA.AutoCommit = TRUE

ls_use = "EXEC sp_addumpdevice 'disk' , 'zyqdata' , '"+ls_path+"'"
EXECUTE IMMEDIATE : ls_use ;

ls_use ="BACKUP DATABASE " + sqlca.database + " TO zyqdata"
EXECUTE IMMEDIATE : ls_use ;

IF SQLCA.SQLCODE = -1 THEN
Messagebox("系统信息","数据库备份失败!~r~n~n请到检查路径正确与否。",Stopsign!)
this.enabled = TRUE
cb_restore.enabled = TRUE
sqlca.sqlcode = 0
sqlca.sqldbcode = 0
ls_use = "EXEC sp_dropdevice 'zyqdata'"
EXECUTE IMMEDIATE : ls_use ;
RETURN
END IF

ls_use = "EXEC sp_dropdevice 'zyqdata'"
EXECUTE IMMEDIATE : ls_use ;

SetPointer(Arrow!)
IF SQLCA.SQLCODE >= 0 THEN
Messagebox("系统信息","备份完成! ")

This.enabled = TRUE
cb_restore.enabled = TRUE
RETURN
END IF
CONNECT USING SQLCA ;
SQLCA.AutoCommit = false

恢复:
string ls_server,ls_database
String ls_path,ls_use

ls_path = sle_repath.text
IF ls_path = "" THEN
Messagebox('系统提示',"请先选择要恢复的数据文件! ")
sle_repath.SetFocus()
RETURN
END IF
ls_server=sqlca.servername
ls_database=sqlca.database
COMMIT USING SQLCA ;
SetPointer(HourGlass!)//---开始恢复
//恢复的原因,连接到master数据库
DISCONNECT USING SQLCA ;
Transaction SQLCA_MASTER
SQLCA_MASTER = CREATE Transaction
SQLCA_MASTER.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA_MASTER.DataBase = "master"
SQLCA_MASTER.LogId = "sa"
SQLCA_MASTER.servername =ls_server
SQLCA_MASTER.AutoCommit = TRUE
SQLCA_MASTER.DBParm = ""
CONNECT USING SQLCA_MASTER ;

This.Enabled = FALSE
cb_backup.Enabled = FALSE

ls_use = "EXEC sp_addumpdevice 'disk' "+" , 'zyqdataa' "+","+" '"+ls_path+"' "
EXECUTE IMMEDIATE : ls_use USING SQLCA_MASTER;

ls_use = "RESTORE DATABASE " + ls_database + " FROM DISK = "+" '"+ls_path+"' "
EXECUTE IMMEDIATE : ls_use USING SQLCA_MASTER;

IF SQLCA_MASTER.SQLCODE = -1 THEN
Messagebox("系统信息","警告:数据库恢复失败!~r~n~n请确认路径以及所选文件正确与否!~r~n~n或者有其他用户正在连接数据库!",Stopsign!)
This.Enabled = TRUE
cb_backup.Enabled = TRUE
SQLCA.SQLCODE = 0
SQLCA.SQLDBCODE = 0
ls_use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE : ls_use USING SQLCA_MASTER;
RETURN
END IF

ls_use = "EXEC sp_dropdevice 'zyqdata'"
EXECUTE IMMEDIATE : ls_use USING SQLCA_MASTER;

IF SQLCA_MASTER.SQLCODE = 0 THEN
Messagebox("系统信息","数据库恢复完成!")
This.Enabled = TRUE
cb_backup.Enabled = TRUE
RETURN
ELSE
Messagebox('系统信息','数据库备份操作未进行!',Stopsign!)
RETURN
END IF
DISCONNECT USING SQLCA_MASTER ;
CONNECT USING SQLCA ;
SetPointer(HourGlass!)



---------------------------------------------------------------

一种SYBASE数据库的备份方法
王明怡
  随着金融业电子化水平的提高,大中型数据库产品在金融业的使用越来越普及,其中SYBASE是使用较为广泛的一种。在数据库的使用中,数据的备份和恢复是系统管理员所要负责的一项主要工作,它对于保证业务系统的安全起着重要的作用。
  由于SYBASE数据库的备份命令不能用Powerbuilder工具实现,采用其他工具(如C语言等)又较复杂,同时数据库又有定时备份的要求。为了免去系统管理人员日常的重复操作,让计算机来自动完成这一任务,笔者通过Windows95系统所带的计划任务功能及批处理命令的制作,总结了一套较为简便的备份方法。
  该方法要求有一台与服务器联网的主机做为备份用的客户端主机,该主机自动按时对数据库进行备份并将备份下来的文件取到自己硬盘上。备份客户机的安装和设置:
  一、该主机要求预装Windows 95或更高版本
  由于该操作系统具备“计划任务”功能,“计划任务”程序是将任务安排为定期运行或在最方便时运行的工具。每次启动Windows时启动“计划任务”程序,并在后台运行。在此基础上安装TCP/IP软件及sybase for Windows 95软件。
  二、在适当的位置建立子目录用于存放备份文件及批处理文件,在该子目录下建立以下文件
  1.用于运行isq1的脚本文件bak,内容为:
  dump transaction 数据库名with truncate_only
  dump database to数据库名to′/usr/sybase/bak/dbdum′
  go
  2.用于运行ftp的脚本文件getf,内容为:
  sybase用户名
  sybase用户的口令
  cd/usr/sybase/bak
  bin
  get dbdun
  bye
  3.运行isq1的批处理文件bk,内容为:
  @echo off
  isq1 -U sa -P sa的口令-i bak -I sq1.ini -S sybase端口号-o out
  echo on
  4.运行ftp的批处理文件getfile,内容为
  @echo off
  ftp -v -s:getf服务器的IP地址
  echo on
  三、设置计划任务
  在“我的电脑”图标中选定“计划任务”,再“添加已计划的任务”,选择“下一步”,单击“浏览”,选择指定目录下的bk批命令,“该任务的执行方式:”按实际业务系统备份需要可设定不同的频度(如“每天”、“每周”等)、计划运行开始时间和日期。
  相类似添加已计划的任务getfile批命令,频度与bk相同,计划运行开始时间可根据bk批命令实际运行的时间晚一些,一般比前一任务开始时间晚20分钟即可。
  另外,根据实际运行情况可更改一些高级设置的内容。
taoguang2 2003-06-23
  • 打赏
  • 举报
回复
可是楼上说的方法我不会啊,我写的语句错了吗?
Thinkinger 2003-06-23
  • 打赏
  • 举报
回复
run函数只是反映它指定的程序有没有启动运行,至于程序具体执行是不是按照你的要求成功的运行,不是run能接收到的。建议用动态sql语句做,或者用存储过程做备份也行!
taoguang2 2003-06-23
  • 打赏
  • 举报
回复
我up!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧