如何用程序实现数据库的备份和还原??

shuiyubing1983 2005-09-17 02:03:50
我想做一个程序实现数据库的备份和还原,针对的是MS SQL SERVER 2000 数据库!
...全文
181 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharelove 2005-09-19
  • 打赏
  • 举报
回复
sql的话用sql自身定时备份不是更好吗?
shuiyubing1983 2005-09-19
  • 打赏
  • 举报
回复
呵呵我准备做的时候是加入到安装程序中去的!~这样在安装的过程中自动的去还原数据库免去我们手动还原的麻烦
tzLYF2012 2005-09-18
  • 打赏
  • 举报
回复
SQL Server 可以直接调用 Backup 和 Restore 命令备份和恢复数据库,备份无需停数据库.

可以参考以下代码:

ls_SQL = "EXEC('USE master')"
EXECUTE IMMEDIATE :ls_SQL;

SQLCA.AutoCommit = TRUE

ls_SQL = "EXEC sp_dropdevice 'bakdevice'"
EXECUTE IMMEDIATE :ls_SQL;

ls_SQL = "EXEC sp_addumpdevice 'disk' , 'bakdevice' , '"+ls_outFile+"'"
EXECUTE IMMEDIATE :ls_SQL;

lb_Result=(SQLCA.SQLCODE = 0)
IF NOT lb_Result THEN
Messagebox("错误","对不起,创建备份设备失败!~n~n"+SQLCA.SQLErrText,Stopsign!)
ELSE
ls_SQL = 'BACKUP DATABASE '+数据库名称+' TO bakdevice'
EXECUTE IMMEDIATE :ls_SQL;
lb_Result=(SQLCA.SQLCODE = 0)
IF lb_Result THEN
MessageBox("提示","数据备份成功!请继续...")
ELSE
Messagebox("错误","对不起,数据备份失败!~n~n"+SQLCA.SQLErrText,Stopsign!)
END IF

ls_SQL = "EXEC sp_dropdevice 'bakdevice'"
EXECUTE IMMEDIATE :ls_SQL;
END IF

SQLCA.AutoCommit = FALSE


恢复代码:

ls_SQL = "EXEC sp_addumpdevice 'disk' "+" , 'bakdevice' "+","+" '"+ls_inFile+"' "
EXECUTE IMMEDIATE : ls_SQL;

lb_Result=(SQLCA.SQLCODE = 0)
IF NOT lb_Result THEN
Messagebox("错误","对不起,创建备份设备失败!~n~n"+SQLCA.SQLErrText,Stopsign!)
ELSE
ls_SQL = "RESTORE DATABASE "+数据库名称+" FROM bakdevice"
EXECUTE IMMEDIATE : ls_SQL;

lb_Result=(SQLCA.SQLCODE = 0)
IF lb_Result THEN
MessageBox("提示","数据恢复成功!~n~n单击“确定”按钮将关闭本系统。请重新运行!",Exclamation!)
ELSE
Messagebox("错误:","对不起,数据恢复失败!~n~n"+SQLCA.SQLErrText,Stopsign!)
END IF

ls_SQL = "EXEC sp_dropdevice 'bakdevice'"
EXECUTE IMMEDIATE :ls_SQL;
END IF

DISCONNECT USING SQLCA ;
sgsp080808 2005-09-17
  • 打赏
  • 举报
回复
最简单的思路就是停数据库把两个数据库文件拷出来再启动数据库
做两个批处理程序,一个写net start mssqlserver另一个写net stop mssqlserver这两个就是用来停和启动数据库的,文件拷贝就不用说了吧

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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