我在ADOQuery中利用restore语句进行数据库还原,语句如下:
if FileExists('网间结算系统.bak') then
begin
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('use master restore database 网间结算系统 from disk='+''''+Label2.Caption+''''+' with replace');
Form1.ADOQuery1.ExecSQL;
showmessage('success');
end;
运行后没有出错,但数据库并没有被还原,还是原来的,怎么回事啊?

解决方案 »

  1.   

    Form1. ADOQuery1.Connection 直接邊到 master!!然後 Sql := 'restore ....
      

  2.   

    直接连到master是什么意思?我没有用ADOQuery1.Connection,而是直接用ConnectionString连
    到数据库上的.麻烦你再说详细点,谢了
      

  3.   

    意思是ADOQuery1所连的数据库应该是master;
    好像应该还牵涉关闭在用数据库连接的问题。我是使用master来处理backup 和 restore 的,但 restore 时总是提示 “在用”之类信息,关闭了相关的连接也不行。
    不知何故,望高手见教。 关注
      

  4.   

    连接的时候你如果ADOQuery关闭的话,并不代表你把ADOConnection也关闭了,aiirii(ari-爱的眼睛) 的说法应该不错,你照他的做做看,因为你把ADOQuery关闭的时候,ADOConnection还在访问呢,所以会说‘在用’,如果你用ADOQuery直接连接数据库就应该没有这种问题了
      

  5.   

    先谢谢大家,但我刚才试了一下,把ADOQuery直接连在master上,并且同时断掉所有的ADOTable
    /ADOConnection等与数据库相连的组件,仍然不行.另外我恢复的时候并没有提示'数据库被使用',而是恢复过程执行完后,数据库并没有被恢复,还是保持原状