读书人

delphi 对sql sever数据库开展备份与还

发布时间: 2012-08-26 16:48:05 作者: rapoo

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;

读书人网 >.NET

热点推荐