PB中如何备份和恢复数据库? --sql server


PB中如何备份和恢复数据库?  
 
备份:  
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!)  
 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值