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!) |
PB中如何备份和恢复数据库? --sql server
最新推荐文章于 2015-07-15 17:20:47 发布