51CTO技术论坛 » PowerBuilder » 关于数据库备份!        上一帖     下一帖    查看完整版本

页: [1]

tl-study2006-10-21 07:22
关于数据库备份!

string ls_use
ls_use = 'EXEC'+'('+"'USE master'"+')'
EXECUTE IMMEDIATE :ls_use ;
ls_use = "EXEC sp_addumpdevice 'disk' , 'coolnan' , 'c:\aa.mdf'"
EXECUTE IMMEDIATE : ls_use ;
ls_use ='BACKUP DATABASE picture TO coolnan'
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 'coolnan'"
   EXECUTE IMMEDIATE : ls_use ;
RETURN
END IF
ls_use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE : ls_use ;

为什么不好使呢?SQLCA.SQLCODE 每次都返回 -1

用SQL查询分析器可以直接执行
EXEC('USE master')
EXEC sp_addumpdevice 'disk' , 'coolnan' ,'c:\aa.mdf'
BACKUP DATABASE picture TO coolnan
EXEC sp_dropdevice 'coolnan'
执行结果:
(所影响的行数为 1 行)

'硬盘' 设备已添加。
已处理 96 页,这些页属于数据库 'picture' 的文件 'picture_Data'(位于文件 3 上)。
已处理 1 页,这些页属于数据库 'picture' 的文件 'picture_Log'(位于文件 3 上)。
BACKUP DATABASE 操作成功地处理了 97 页,花费了 0.239 秒(3.294 MB/秒)。
设备已除去。

[[i] 本帖最后由 tl-study 于 2006-10-21 15:24 编辑 [/i]]

tl-study2006-10-23 12:16
救命呀!给回个贴呗!

ribut92252006-10-24 01:08
偶觉得你好像组成的SQL语句字符串有问题

你在执行前,把要执行的SQL语句MESSAGEBX一下,
看看SQL语句是否有问题

zengbz4692006-10-26 17:56
先建一个backup(string backup_mode,return int)
if backup_mode = "INIT" then
str_sql="BACKUP DATABASE "+str_dbname+" to disk='"+str_bkfilename+"'" + "WITH INIT" //(重写:"WITH INIT" 差异:"WITH DIFFERENTIAL" 完全追加:无with子句)
end if
if backup_mode = "DIFFERENTIAL" then
str_sql="BACKUP DATABASE "+str_dbname+" to disk='"+str_bkfilename+"'" + "WITH DIFFERENTIAL" //(重写:"WITH INIT" 差异:"WITH DIFFERENTIAL" 完全追加:无with子句)
end if
if backup_mode = "fulladd" then
str_sql="BACKUP DATABASE "+str_dbname+" to disk='"+str_bkfilename+"'"   //(重写:"WITH INIT" 差异:"WITH DIFFERENTIAL" 完全追加:无with子句)
end if
EXECUTE IMMEDIATE :str_sql;
if sqlca.sqlcode  0 then
str_tmp=sqlca.sqlerrtext
   disconnect;
  messagebox('提示','备份数据库时出错,详细信息如下:~r~n~r~n'+str_tmp)
return 0
else
disconnect;
messagebox("提示","数据库已备份在"+str_bkfilename+"的文件,并会重新启动系统!")

close(w_master)


end if

return 1

关键词: 备份       数据库       数据库备份              

相关文章:
MySQL数据库备份
ORACLE 数据库备份技术
PB/Sybase系统开发中的数据库转移
PartitionMagic整坏了,数据怎么恢复,请指教

查看完整版本: 关于数据库备份!


Powered by 51CTO.COM