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

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

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

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;

热点排行