先备份了数据库,然后恢复,虽然显示恢复成功,但是查看数据以后,并没有恢复.又用sql server企业管理器恢复,然后数据库确实恢复了.所以应该不是备份的问题,麻烦大虾看看数据为什么不能恢复.
代码如下:
procedure TBeiFen.Button2Click(Sender: TObject);//恢复
var
  dir:string;
  id:Dword;
  pd:Thandle;
begin
  try
    if OpenDialog1.Execute then
     begin
        dir:=OpenDialog1.FileName;
        With ADOQuery1 do
        begin
          Close;
          SqL.Clear;
          SQL.Add('use master restore database CHildhood from disk='+''''+dir+'''');
          ExecSQL;
          Close;
          SqL.Clear;
          SQL.Add('use CHildhood');
          ExecSQL ;
        end;
        pd:=createthread(nil,0,@pro,nil,0,id);
        progressbar1.Position:=progressbar1.Max;
        showmessage('恢复成功');
        progressbar1.Position:=progressbar1.Min;
     end;
  except
    showmessage('恢复失败');
    progressbar1.Position:=progressbar1.Min;
end;
end;
还有一问题,为什么有的人delphi代码中关键字是蓝色的?我这全是黑的呢?

解决方案 »

  1.   

    为什么有的人delphi代码中关键字是蓝色的?我这全是黑的呢?
    这个可以自己设置,在tools ->环境选项中设置
      

  2.   


    tool -- editor options -- color
      

  3.   


    With ADOQuery1 do 
    begin 
      Close; 
      SqL.Clear; 
      SQL.Add('use master restore database CHildhood from disk='+''''+dir+''''); 
      ExecSQL; 
      Close; 
      SqL.Clear; 
      SQL.Add('use CHildhood');//这里做什么的?
      ExecSQL ; 
    end;你要的代码颜色,是指delphi 里还是指论坛
      

  4.   

     数据库不能恢复应该是正在使用的原因,但是我那程序登陆就要用到数据库验证用户名与密码 ,而且每个窗体都是用的独立的adoconnection,请问应该怎么关闭数据库,让数据库能够还原呢?
      

  5.   


    childhood是我数据库的名字
      

  6.   

    试一试SQL语句在查询分析器中执行能不能恢复没必要每个窗口一个adoconnection
      

  7.   

    下面代码就可以。测试过了。要先分离数据库
    var adoquery1:Tadoquery;
    begin
      adoquery1:=Tadoquery.create(self);
      if   opendialog1.Execute   then 
      begin
      adoquery1.Connection:=dm1.ADOConnection1;
      adoquery1.SQL.Add('use   master');
      adoquery1.SQL.Add(' ALTER   DATABASE   数据库名   SET   OFFLINE   WITH   ROLLBACK IMMEDIATE');
      adoquery1.SQL.Add(' restore   database 数据库名  from disk= '''+opendialog1.FileName+ '''');
      adoquery1.SQL.Add( ' ALTER   DATABASE  数据库名 SET   ONLINE   WITH   ROLLBACK   IMMEDIATE');
      adoquery1.SQL.Add(' use   数据库名 ');  adoquery1.ExecSQL;
      application.MessageBox( '恢复成功 ', '提示 ',MB_OK);
      end;
    end;
      

  8.   


    var adoquery1:Tadoquery; 
    begin 
      adoquery1:=Tadoquery.create(self); 
      if  opendialog1.Execute  then 
      begin 
      adoquery1.Connection:=dm1.ADOConnection1; //这句的dm1是datamodal1吗?我都是用adoconnection,没有这个?
      adoquery1.SQL.Add('use  master'); 
      adoquery1.SQL.Add(' ALTER  DATABASE  数据库名  SET  OFFLINE  WITH  ROLLBACK IMMEDIATE'); 
      adoquery1.SQL.Add(' restore  database 数据库名  from disk= '''+opendialog1.FileName+ ''''); 
      adoquery1.SQL.Add( ' ALTER  DATABASE  数据库名 SET  ONLINE  WITH  ROLLBACK  IMMEDIATE'); 
      adoquery1.SQL.Add(' use  数据库名 ');   adoquery1.ExecSQL; 
      application.MessageBox( '恢复成功 ', '提示 ',MB_OK); 
      end; 
    end;