我这样写的,但是从表中删掉一些数据,恢复不了,是么原因啊 ,其中ADOConnection2连接的master数据库query := TADOQuery.Create(nil);
datamodule1.ADOConnection1.Connected:=false;
query.Connection := datamodule1.ADOConnection2;
try
    query.SQL.Add('USE master');
    query.SQL.Add('RESTORE DATABASE resourcemanage FROM DISK = '''+trim(form_resdata.lj.text)+''' with FILE = 1,NOUNLOAD , STATS = 10, RECOVERY ');   // FILE = 1,NOUNLOAD , STATS = 10, RECOVERY
    query.ExecSQL;
    query.Free;
    except
    on E:Exception do
        begin
      Application.MessageBox(PChar(E.Message),'错误提示',MB_OK+MB_ICONERROR);
    query.Free;
        end;
end;

解决方案 »

  1.   

    单步执行一下,看看你的sql.text是什么
      

  2.   

    sql.text的值是'USE master'#$D#$A'RESTORE DATABASE resourcemanage FROM DISK = 'E:\2006-06-09' with FILE = 1,NOUNLOAD , STATS = 10, RECOVERY '#$D#$A
      

  3.   

    create  proc  killspid  (@dbname  varchar(20))
    as
    begin
    declare  @sql  nvarchar(500),@temp varchar(1000)
    declare  @spid  int
    set  @sql='declare  getspid  cursor  for
    select  spid  from  sysprocesses  where  dbid=db_id('''+@dbname+''')'
    exec  (@sql)
    open  getspid
    fetch  next  from  getspid  into  @spid
    while  @@fetch_status =0
    begin
      set @temp='kill  '+rtrim(@spid)
      exec(@temp)
    fetch  next  from  getspid  into  @spid
    end
    close  getspid
    deallocate  getspid
    end===================================
    网上常见的杀死数据库进程的存储过程,执行后在恢复即可。
      

  4.   

    'E:\2006-06-09这个后边应该有.bak吧。
      

  5.   

    USE master RESTORE DATABASE resourcemanage FROM DISK = 'E:\2006-06-09' with FILE=1,NOUNLOAD , STATS=10, RECOVERY 
    但是在查询分析器上可以还原啊
      

  6.   

    你的ADOquery是动态生成的,改成在设计期试试,应该没问题。
      

  7.   

    用下面的类似代码试试验
    procedure Tf_bk.Button3Click(Sender: TObject);
    begin
    adoq.SQL.Text:='use master' ;
    adoq.ExecSQL;
    adoq.SQL.Text:='RESTORE   DATABASE   analysys  from disk='''+edit2.Text+''''+' with REPLACE ');try
    adoq.ExecSQL;
    showmessage('数据库恢复成功!');
    edit2.Text:='';
    button3.Enabled:=false;
    except
    showmessage('数据库恢复失败!');
    end;
    adoq.SQL.Text:='use analysys' ;
    adoq.ExecSQL;
    end;
      

  8.   

    重启一次试试。。或者是把你恢复数据库语句中的那些条件都去掉。例如RECOVERY
      

  9.   

    哈哈,解决掉了,我把adoconnection1中的连接串清空后,可以了
    谢谢hsmserver(撒哈拉之雨的悲伤) 特别是wudi_1982(︻┳═一)
    马上给分