回 帖 发 新 帖 刷新版面

主题:pb9.0中怎么实现对数据库进行备份

pb9.0中怎么实现对数据库进行备份,各位高手来帮忙小弟啊,最好把你的代码写给我啊.

回复列表 (共5个回复)

沙发

怎么这么长时间都没有人告诉我啊
我郁闷啊.

板凳

是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 楼

谢谢 。是啊,就是用SQL 编写的。

4 楼

照我上面做就行了.
更改你自己的数据库名字和路径等内容

5 楼

那如何恢复呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册