怎样实现在应用程序中实现数据库的的备份和还原功能?谢谢!
解决方案 »
- 救命!Help!!Data Controls上的控件(如DBGrid)与XPManifest有冲突?
- 声明一个类,如何使用其事件?
- 请指下,一个AdoQuery+Access 查询更新语句
- 小弟急求 查找出所有顶层窗口的办法
- ListBox的用法!(急贴!!!)
- 有关COM+,特急求教,请各位帮忙
- 在场的有没有对数据库应用系统开发有经验或对数据敏感控件熟悉的高手?希望能来这里讨论一下这个问题:
- 用什么控件可以将一段HTML代码解释后显示出来?
- 急急!!!向高手请教一个有关combobox的问题?????
- C/S架构,客户端与服务的通讯的问题
- 您好,请教动态数组和随机抽取纪录的问题,谢谢。
- 哪儿有BDE下?
//备份
procedure TDBBackupForm.XP_Button2Click(Sender: TObject);
begin
pgbar.Max:=100;
pgbar.Min:=0;
pgbar.Position:=0;
pgbar.Step:=20;
With SaveDialog1 do
begin
filename:='DB'+FormatDateTime('yy_MM_dd_hh_mm_ss',Now);
options:=[ofhidereadonly,offilemustexist,ofpathmustexist];
if execute then
begin
label1.Caption:='正在备份中...';
DataModule1.ADOConnection1.Close;
TmpStr:= ExtractFileName(filename);
strlen:= Length(TmpStr);
DevName:= Copy(TmpStr,1,strlen-4);
begin
try
ADOCommand1.CommandText:='use Master';
pgbar.StepIt;
ADOCommand1.Execute;
adocommand1.CommandText:='execute sp_helpdevice';
pgbar.StepIt;
adocommand1.Execute ;
pgbar.stepit;
adocommand1.CommandText:='backup database '+InitDB+' to disk='''+filename+''' with init';
pgbar.StepIt;
adocommand1.Execute ;
adocommand1.CommandText:='Use '+InitDB;
pgbar.StepIt;
adocommand1.Execute ;
Self.Hide;
ShowMessage('数据库已经成功备份到 '+filename+'!');
Try
DataModule1.ADOConnection1.Connected:= True;
Except
ShowMessage('无法重新接连数据库!,系统即将退出!');
Application.Terminate;
End;
self.Close;
Except
On Exception do
if DataModule1.ADOConnection1.InTransaction then
DataModule1.ADOConnection1.RollbackTrans;
End;
End;
end;
end;end;
procedure TDBBackupForm.FormActivate(Sender: TObject);
begin
//从INI文件中读出数据库的相关信息
SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI');
try
InitDB := SYSINI.ReadString('Database', 'InitDB', '');
finally
SYSINI.Free;
end;end;
//还原数据库
procedure TDBBackupForm.XP_Button3Click(Sender: TObject);
begin
pgbar.Max:=100;
pgbar.Min:=0;
pgbar.Position:=0;
pgbar.Step:=20;
With OpenDialog1 do
begin
filename:='';
options:=[ofhidereadonly,offilemustexist,ofpathmustexist];
if execute then
begin
label1.Caption:='正在还原中...';
DataModule1.ADOConnection1.Close;
TmpStr:= ExtractFileName(filename);
strlen:= Length(TmpStr);
DevName:= Copy(TmpStr,1,strlen-4);
pgbar.StepIt;
try
ADOCommand1.CommandText:='use Master';
ADOCommand1.Execute;
pgbar.StepIt;
adocommand1.CommandText:='execute sp_helpdevice';
adocommand1.Execute ;
pgbar.stepit;
adocommand1.CommandText:='Restore database '+InitDB+' From disk='''+filename+''' with replace';
pgbar.StepIt;
adocommand1.Execute ;
adocommand1.CommandText:='Use '+InitDB;
pgbar.StepIt;
adocommand1.Execute ;
Self.Hide;
ShowMessage('数据库已经成功还原到数据库 '+InitDB+'!');
Try
DataModule1.ADOConnection1.Connected:= True;
Except
ShowMessage('无法重新接连数据库!,系统即将退出!');
Application.Terminate;
End;
self.Close;
Except
On Exception do
if DataModule1.ADOConnection1.InTransaction then
DataModule1.ADOConnection1.RollbackTrans;
End;
end;
end;end;
还是某个table的建表备份 还是只备份数据 ?
如果是整个数据库的备份
dump database 数据库名 to disk=存盘路径 with init如果是还原数据库
restore database 数据库名 from disk存盘路径 with recovery这样就可以了
可以做成存储过程
restore database 数据库名 from disk存盘路径 好象不行,必须用 with recovery 参数吗?
FROM DISK='C:\Temp\考试系统备份文件'
With
RECOVERY,
Move '考试系统_dat' To 'd:\考试系统.mdf',
Move '考试系统_log' To 'd:\考试系统_log.ldf'
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_ss1',
'C:\Temp\考试系统备份文件2001年11月20日11时17分57秒'
BACKUP DATABASE 考试系统 TO MyNwind_ss1
EXEC sp_DropDevice 'MyNwind_ss1'
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]