主题:pb9.0中怎么实现对数据库进行备份
我爱小燕子
[专家分:170] 发布于 2005-12-09 09:53:00
pb9.0中怎么实现对数据库进行备份,各位高手来帮忙小弟啊,最好把你的代码写给我啊.
回复列表 (共5个回复)
沙发
我爱小燕子 [专家分:170] 发布于 2005-12-27 21:26:00
怎么这么长时间都没有人告诉我啊
我郁闷啊.
板凳
潇洒老乌龟 [专家分:1050] 发布于 2005-12-30 21:00:00
是SQL SERVER吗?
STRING Ls_ServerName
STRING Ls_DBName
STRING Ls_UserName
STRING Ls_DBPwd
STRING Ls_DbFileR
Ls_ServerName = lower(TRIM(sle_servernamer.Text))
Ls_DBName = lower(TRIM(sle_dbnamer.Text))
Ls_UserName = lower(TRIM(sle_usernamer.Text))
Ls_DBPwd = lower(TRIM(sle_passwordr.Text))
Ls_DbFileR = lower(TRIM(sle_dbfiler.Text))
//判断各数据值是否有效
IF LEN(Ls_ServerName) <=0 THEN
MessageBox("系统提示!" , "请输入服务器名!")
sle_servernamer.SelectText(1 , LEN(sle_servernamer.Text))
sle_servernamer.SetFocus()
RETURN
END IF
IF LEN(Ls_DBName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库名!")
sle_dbnamer.SelectText(1 , LEN(sle_dbnamer.Text))
sle_dbnamer.SetFocus()
RETURN
END IF
IF LEN(Ls_UserName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库用户名!")
sle_usernamer.SelectText(1 , LEN(sle_usernamer.Text))
sle_usernamer.SetFocus()
RETURN
END IF
IF LEN(Ls_DbFileR) <=0 THEN
MessageBox("系统提示!" , "请输入数据库备份地址!")
sle_dbfiler.SelectText(1 , LEN(sle_dbfiler.Text))
sle_dbfiler.SetFocus()
RETURN
END IF
IF FileExists(Ls_DbFileR) = TRUE THEN
IF MessageBox("系统提示!" , "数据库备份文件:" + Ls_DbFileR + " 已经存在!覆盖吗?" , Question! , YesNo! , 2) = 2 THEN
RETURN
END IF
END IF
//检查数据库是否存在
SetPointer(HourGlass!)
DISCONNECT USING sqlca;
sqlca.DBMS = "MSS Microsoft SQL Server"
sqlca.Database = Ls_DBName
sqlca.ServerName = Ls_ServerName
sqlca.LogId = Ls_UserName
sqlca.LogPass = Ls_DBPwd
sqlca.AutoCommit = TRUE
sqlca.DBParm = ""
CONNECT USING sqlca;
IF sqlca.sqlcode <> 0 THEN
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + "不存在,不能备份!")
SetPointer(Arrow!)
RETURN
END IF
//开始备份
STRING Ls_Use
SetPointer(HourGlass!)
Ls_Use = 'EXEC' + '(' + "'" + Ls_DBName + SQLCA.Database + "'" + ')'
EXECUTE IMMEDIATE :Ls_Use ;
SQLCA.AutoCommit = TRUE
Ls_Use = "EXEC sp_addumpdevice 'disk' , 'coolnan' , '" + Ls_DbFileR + "'" //数据库备份设备的创建
EXECUTE IMMEDIATE : Ls_Use ;
Ls_Use ='BACKUP DATABASE ' + Ls_DBName + ' TO coolnan'
EXECUTE IMMEDIATE : Ls_Use ;
IF SQLCA.SqlCode = -1 THEN
MESSAGEBOX("系统提示!" , "数据库备份失败!~r~n~r~n请检查路径正确与否?")
sqlca.sqlcode = 0
sqlca.sqldbcode = 0
Ls_Use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE :Ls_Use ;
SQLCA.AutoCommit = FALSE
RETURN
END IF
Ls_Use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE :Ls_Use;
//操作备份记录
INTEGER Li_FileNum
STRING Ls_FileName
STRING Ls_Content
Ls_FileName = Gs_Dir + "\backup.txt"
IF FILEEXISTS(Ls_FileName) = TRUE THEN
Li_FileNum = FileOpen(Ls_FileName , LineMode! , Write! , LockWrite! , Append!)
ELSE
Li_FileNum = FileOpen(Ls_FileName , LineMode! , Write! , LockWrite! , Replace!)
END IF
IF Li_FileNum = - 1 THEN
MESSAGEBOX("系统提示!" , "操作文件backup.txt错误!请与管理员联系!")
RETURN
END IF
Ls_Content = "admin " + STRING(TODAY() , "YYYY-MM-DD") + " " + STRING(NOW() , "HH:MM:SS") + " " + Ls_ServerName + " " + Ls_DBName + " " + Ls_DbFileR
FileWrite(Li_FileNum , Ls_Content)
FileClose(Li_FileNum)
SetPointer(Arrow!)
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + " 备份成功!")
3 楼
我爱小燕子 [专家分:170] 发布于 2006-02-16 17:33:00
谢谢 。是啊,就是用SQL 编写的。
4 楼
潇洒老乌龟 [专家分:1050] 发布于 2006-02-18 09:19:00
照我上面做就行了.
更改你自己的数据库名字和路径等内容
5 楼
kaiyanghu [专家分:30] 发布于 2006-02-22 15:35:00
那如何恢复呢?
我来回复