首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 对sql sever数据库开展备份与还原的详细操作

2012-08-26 
delphi 对sql sever数据库进行备份与还原的详细操作各位大侠,最近在网上找了很多资料,但是几乎难有令我满

delphi 对sql sever数据库进行备份与还原的详细操作
各位大侠,最近在网上找了很多资料,但是几乎难有令我满意的,我设计的备份还原的界面如下图:
在选择备份路径后是一个directoryedit框 ,用于选择备份文件夹,点击备份按钮进行备份
在选择还原文件后面是一个filenameedit框,用以选择备份的文件,点击还原后进行还原,
但是我的程序并不能给出满意的答案,而且我的备份路径不对时,程序也会出错提示:‘无法打开备份设备…’,能否实现在自己选定的文件夹备份呢?
还有还原,也不能真正地还原;
程序如下:
procedure TForm1.sbtbtn5Click(Sender: TObject);

begin
  { DataModule2.qry1.Close;
  DataModule2.qry1.SQL.Clear;
  DataModule2.qry1.SQL.Add('BACKUP database jinxiaocun to disk=:p1');
  try
  try
  DataModule2.qry1.Parameters.ParamByName('p1').Value:=edt13.Text+'\as.dat'; // edt13便是directoryedit框
  DataModule2.qry1.ExecSQL;
  finally
  Application.MessageBox('数据备份成功!', '提示', MB_OKCANCEL +
  MB_ICONINFORMATION);
  end;
  except
  MessageDlg('数据备份失败!', mtInformation, mbOKCancel, 0);
  end; }
  DataModule2.qry2.Close;
  DataModule2.qry2.SQL.Clear;
  DataModule2.qry2.SQL.Add('backup database jinxiaocun to disk=' + '''' + 'e:\backup.dat' + '''');
  DataModule2.qry2.execsql;

end;

procedure TForm1.sbtbtn6Click(Sender: TObject);
var
  s:string;
begin
  { DataModule2.con1.Close;
  with DataModule2.qry2 do
  begin
  Close;
  SQL.Clear;
  SQL.Add('use master alter database jinxiaocun set offline WITH ROLLBACK IMMEDIATE ');
  SQL.Add('restore database jinxiaocun from disk=:p1 with replace ');
  SQL.Add('alter database jinxiaocun set online');
  Parameters.ParamByName('p1').Value:=edt14.FileName; //edt14便是filenameedit
  try
  ExecSQL;
  ShowMessage('还原成功!!');
  except
  Showmessage('还原失败!!');
  exit;
  end;
  end;
  DataModule2.con1.Open; }
  DataModule2.con1.Close;
  DataModule2.qry2.Close;
  DataModule2.qry2.SQL.Clear;
  DataModule2.qry2.SQL.Add('restore database jinxiaocun from disk=' + '''' + 'e:\backup.dat' + '''');
  DataModule2.qry2.ExecSQL;
  DataModule2.qry2.Close;
  DataModule2.con1.Open;
end;
各位大侠能否提供一个更好的备份还原的方法;或者能在线程中实现的,希望各位大侠能详细的解释一下在delphi中对sql sever数据库进行备份还原的详细过程



[解决办法]
你打开事件跟踪器工具,然后在sqlserver中对数据库进行备份还原,然后看看事件跟踪器中显示的sql语句,自己对着写一个就是了
[解决办法]
我的数据库备份源码:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;User ID=admin;Data Source=dbtemp';

adoquery2.Close;
adoquery2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;User ID=admin;Data Source=dbtemp';
BitBtn3.Enabled:=false;
try
with adoquery1 do
begin
close;
sql.Clear;
//备份数据库
sql.Add('backup database sifa to disk=''e:\backup\sifa.bak'' with init');
execsql;
end;

with adoquery2 do
begin
close;
sql.Clear;
//备份日志文件
sql.Add('backup log sifa to disk=''e:\backup\sifa_log.bak''');
execsql;
end;

showmessage('数据库备份成功!');
BitBtn3.Enabled:=true;
except
on e:exception do
showmessage('数据库备份失败!');



end;

BitBtn3.Enabled:=true;
end;

热点排行