Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:数据库    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  SQL Server数据库的备份与恢复  
 
如何实现SQL Server数据库的备份与恢复

备份:
procedure TBackupFrm.BitBtn2Click(Sender: TObject);
begin
if Edit1.Text= ' then
begin
Showmessage('无选择要保存的文件名');
exit;
end;
try
try
dmData.adoQryTmp.Active:= false;
dmData.adoQryTmp.SQL.Clear;
dmData.adoQryTmp.SQL.Add('BACKUP DATABASE [dzyl] TO DISK = ''+edit1.text+'' WITH INIT');
dmData.adoQryTmp.ExecSQL;
finally
begin
dmData.adoQryTmp.Active:= false;
Showmessage('数据库备份成功!');
end;
end;
except
on e:exception do
begin
ShowMessage('数据库备份失败!');
end;
end;
end;
---------------------------
恢复
procedure TBackupFrm.BitBtn4Click(Sender: TObject);
begin
if Edit2.Text = ' then
begin
showmessage('未选择要恢复的数据库文件!');
exit;
end;
with dmData do
begin
try
adocmmd.CommandText:='use master';
adocmmd.Execute;
adocmmd.CommandText:='alter database dzyl set offline with rollback immediate';
adocmmd.Execute;
adocmmd.CommandText:='restore database dzyl from disk= ''+edit2.Text+'' with

recovery ';
adocmmd.Execute;
adocmmd.CommandText:=' alter database dzyl set online with rollback immediate';
adocmmd.Execute;
showmessage('数据库恢复成功!');
application.Terminate;
except
on e:exception do
begin
showmessage('数据库恢复失败!'+e.Message);
end;

end;
end;
其中dmData.adoQryTmp连接的是系统MASTER数据库,备份还原之前应该关闭要备份还原的AdoConn数据库

连接AdoConn.Connected:=False;
------------------------------------------------
另一方法:
备份如下:
try
backupString := 'BACKUP DATABASE [Paper] TO DISK = N''+edit1.Text+'' WITH

INIT , NOUNLOAD , NAME = N'Paper 备份', NOSKIP , STATS = 10, NOFORMAT';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(backupString);
ADOQuery1.Prepared;
adoquery1.ExecSQL;
application.MessageBox('备份成功。','提示',0);
except
application.MessageBox('备份出错!请重新备份数据。','出错',0);
end;
---------------------------
还原如下:
if opendialog1.Execute then
begin
try
adoquery1.Close();
adoquery1.SQL.Clear;
adoquery1.SQL.Add('use master');
adoquery1.Prepared;
adoquery1.ExecSQL;
restorestring := 'RESTORE DATABASE [Paper] FROM DISK =

N''+opendialog1.FileName+'' WITH FILE = 1, NOUNLOAD , STATS = 10, REPLACE,RECOVERY';
self.ADOCommand1.CommandText := restoreString;
adocommand1.Execute;
application.MessageBox('还原数据成功','提示',0);

adoquery1.Close();
adoquery1.SQL.Clear;
adoquery1.SQL.Add('use paper');
adoquery1.Prepared;
adoquery1.ExecSQL;
except
application.MessageBox('还原数据出错!请重新还原,并停止一切的数据操作!

','提示',0);
end;
end;

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站