var
 ssql:string;
 filename:string;
begin
  if opendialog1.execute then
   begin
    filename:=opendialog1.filename;
     showmessage(filename);
 try
  begin
   ssql:='use master';
   ssql:='alter database hunter set offline with roll immediate';
   ssql:='restore database hunter from disk='''+filename+'''';
   ssql:='alter database hunter set online with roll immediate';   adoquery5.Close;
   adoquery5.SQL.Clear;
   adoquery5.SQL.text:='ssql';
   adoquery5.ExecSQL;
  end;
   showmessage('还原成功');
 except
   showmessage('还原失败');
 end;
  end;
end;

解决方案 »

  1.   

    是未能找到存储过程 'ssql'
      

  2.   

    adoquery5.SQL.text:='ssql';--这句不要加引号吧
      

  3.   

    楼上的谢谢了` 我改过来了` 又出现`roll附近有语法错误了~
      

  4.   

    这样的写法是错的,如果你要连接几个字符串,ssql:=ssql+''....
    不过我建议你用Query.sql.add('use databasename')
    Query.add('');
    Query.add('');这样的方式。
      

  5.   

    ssql:='use master';
       ssql:=ssql+' alter database hunter set offline with roll immediate';
       ssql:=ssql+' restore database hunter from disk='''+filename+'''';
       ssql:=ssql+' alter database hunter set online with roll immediate';   adoquery5.Close;
       adoquery5.SQL.Clear;
       adoquery5.SQL.text:=ssql;
       adoquery5.ExecSQL;