在程序中如何按时间段对数据进行备份、恢复?数据库为SQLServer7.0

时间:2022-03-27 08:14:36
“时间”为两层意思:
1)备份或恢复操作的时间。例如2001年5月20日、2001年5月31日分别对数据库中全部表及其数据进行了备份,那么恢复时可以选择这两个日期进行恢复。
2)对含DateTime类型字段的某些表的数据进行转存。例如在2001年6月2日对2001年5月20日至2001年5月31日之间的数据进行备份并删除,那么恢复时可以选择2001年6月2日这个日期对5月20日至2001年5月31日之间的数据进行恢复。

13 个解决方案

#1


思路整理中...
欲知详情,请晚上来...

#2


1)CREATE PROCEDURE sp_list_backups AS RESTORE HEADERONLY FROM backup_device,利用此存储过程可以列出备份设备中的所有备份集的信息,其中包括备份开始时间BackupStartDate和备份结束时间BackupFinishDate(datetime类型)以及备份集的位置SortOrder(恢复时用)。
用BACKUP DATABASE进行备份,恢复时利用sp_list_backups生成的数据窗口让用户选择想要恢复的备份集,用RESTORE DATABASE进行恢复(加上FILE=所选择的备份集的位置SortOrder)。
具体你可以参考SQl Server7的帮助。
2)简单。利用数据窗口的SaveAs及ImportFile两个函数不难实现。


#3


想法很简单~~
但很不实际~~
这种备份没什么实际意义~~
大系统-白忙活~~
小系统-呵呵..~~

#4


用sqlserver7.0的sqldemo在vb里做一个控件,然后再pb中调用,即可随心所欲备份!
哦,对了大伙别吵我要,我没源码!呵呵

#5


to SOFTFUN_CSDN(SOFTFUN):
如何说服我们头儿呢?他又如何去说服半懂不懂还装懂的甲方老头呢?

#6


to BlackBone(BlackBone):脚本中具体怎么用Backup Database或Restore DataBase?
第一次用PB做东西,真没想到都一把年纪了还要学这样的新东西,以前用VC做类似的系统是把自己需要的数据查出来后写为二进制文件里,文件里写上备份日期之类的信息,要备到软盘里,还可以把文件切分一下之类,完全由自己程序控制。但巨复杂。以为PB专门作MIS应该有好的简单易行的方法。

#7


呵呵~~
你就混着交差吧~~
受害的还是甲方~~
哈哈~~

#8


1、BACKUP DATABASE 数据库名 TO 备份设备名 WITH RETAINDAYS=备份有效天数, NAME=备份集名称, DESCRIPTION=备份集的说明
2、RESTORE DATABASE 数据库名 FROM 备份设备名 WITH FILE=我上面所说的备份集的位置
3、其他参数还有很多,无法一一列举,你自己查查帮助或者参考手册之类的吧。

#9


am2000(最后一滴水) (2001-6-4 17:44:00) 
思路整理中...
欲知详情,请晚上来...  

请问怎么给贴子加分?以前还看见过,但现在是不是没这功能了?

#10


有人说用BCP,但BCP有个问题:恢复时,如果原表中还有数据则恢复不成功,尤其跟备份有相同数据时出现主键冲突错。也就是说恢复时首先要把欲恢复的表都清空才能成功。不会是我没用对bcp吧?

#11


有没有搞错?加分也要跟个贴才行?!

#12


还是用osql,调用前先用相应函数把对应的SQL语句写到文件里(如BACKUP.SQL,RESTORE.SQL),然后用调用osql。
osql的用法我已经在那个帖子里回复过,就不再重复了。

#13


在WITH后面加上STAT=1(或者别的数,表示返回的频率),就可以在输出文件里读到备份或者恢复的进度(以Line!方式打开文件,每行行首为完成的百分数,你可以在dos下运行一下osql试试)。开始备份后,立即反复读文件(当然要有个限制,避免死循环),读到100后表明已成功。
我发现用此法备份数据库时,比直接在dos下用osql的速度要快,不知为什么。

#1


思路整理中...
欲知详情,请晚上来...

#2


1)CREATE PROCEDURE sp_list_backups AS RESTORE HEADERONLY FROM backup_device,利用此存储过程可以列出备份设备中的所有备份集的信息,其中包括备份开始时间BackupStartDate和备份结束时间BackupFinishDate(datetime类型)以及备份集的位置SortOrder(恢复时用)。
用BACKUP DATABASE进行备份,恢复时利用sp_list_backups生成的数据窗口让用户选择想要恢复的备份集,用RESTORE DATABASE进行恢复(加上FILE=所选择的备份集的位置SortOrder)。
具体你可以参考SQl Server7的帮助。
2)简单。利用数据窗口的SaveAs及ImportFile两个函数不难实现。


#3


想法很简单~~
但很不实际~~
这种备份没什么实际意义~~
大系统-白忙活~~
小系统-呵呵..~~

#4


用sqlserver7.0的sqldemo在vb里做一个控件,然后再pb中调用,即可随心所欲备份!
哦,对了大伙别吵我要,我没源码!呵呵

#5


to SOFTFUN_CSDN(SOFTFUN):
如何说服我们头儿呢?他又如何去说服半懂不懂还装懂的甲方老头呢?

#6


to BlackBone(BlackBone):脚本中具体怎么用Backup Database或Restore DataBase?
第一次用PB做东西,真没想到都一把年纪了还要学这样的新东西,以前用VC做类似的系统是把自己需要的数据查出来后写为二进制文件里,文件里写上备份日期之类的信息,要备到软盘里,还可以把文件切分一下之类,完全由自己程序控制。但巨复杂。以为PB专门作MIS应该有好的简单易行的方法。

#7


呵呵~~
你就混着交差吧~~
受害的还是甲方~~
哈哈~~

#8


1、BACKUP DATABASE 数据库名 TO 备份设备名 WITH RETAINDAYS=备份有效天数, NAME=备份集名称, DESCRIPTION=备份集的说明
2、RESTORE DATABASE 数据库名 FROM 备份设备名 WITH FILE=我上面所说的备份集的位置
3、其他参数还有很多,无法一一列举,你自己查查帮助或者参考手册之类的吧。

#9


am2000(最后一滴水) (2001-6-4 17:44:00) 
思路整理中...
欲知详情,请晚上来...  

请问怎么给贴子加分?以前还看见过,但现在是不是没这功能了?

#10


有人说用BCP,但BCP有个问题:恢复时,如果原表中还有数据则恢复不成功,尤其跟备份有相同数据时出现主键冲突错。也就是说恢复时首先要把欲恢复的表都清空才能成功。不会是我没用对bcp吧?

#11


有没有搞错?加分也要跟个贴才行?!

#12


还是用osql,调用前先用相应函数把对应的SQL语句写到文件里(如BACKUP.SQL,RESTORE.SQL),然后用调用osql。
osql的用法我已经在那个帖子里回复过,就不再重复了。

#13


在WITH后面加上STAT=1(或者别的数,表示返回的频率),就可以在输出文件里读到备份或者恢复的进度(以Line!方式打开文件,每行行首为完成的百分数,你可以在dos下运行一下osql试试)。开始备份后,立即反复读文件(当然要有个限制,避免死循环),读到100后表明已成功。
我发现用此法备份数据库时,比直接在dos下用osql的速度要快,不知为什么。