我用的BDE+SQL SERVER...可以BACKUP.
但是用RESTORE还原时候老提示数据库正在使用,请问怎么解决??
最好有详细点的代码,问题解决马上散分...

解决方案 »

  1.   

    upup....
    没人回吗??
    555555555555
      

  2.   

    恢复数据库:因为你正在打开的数据库所以先关闭(我用的是ADO你改以下就可以了)
      DM.CLE_Connect.Connected := False;
      MySQL := 'ALTER DATABASE DB_CLE SET OFFLINE WITH ROLLBACK IMMEDIATE'; //关闭数据库
      with ADOQueryRestor do
      begin
        Close;
        SQL.Clear;
        SQL.Text := MySQL;
        try
          ExecSQL;
        except    end;
      end;
      RestorStr := 'RESTORE DATABASE DB_CLE FROM DISK = ''' + Trim(e_lj.Text) + ''' WITH REPLACE';
      with ADOQueryRestor do
      begin
        Close;
        SQL.Clear;
        SQL.Text := RestorStr;
        try
          ExecSQL;
          Application.MessageBox('恢复数据库成功!','提示!',mb_ok+mb_iconinformation);
        except
          Application.MessageBox('恢复数据库出错!','错误!',mb_ok+mb_iconError);
        end;
      end;
      MySQL := 'ALTER DATABASE DB_CLE SET ONLINE WITH ROLLBACK IMMEDIATE';
      with ADOQueryRestor do
      begin
        Close;
        SQL.Clear;
        SQL.Text := MySQL;
        try
          ExecSQL;
        except    end;
      end;
      DM.CLE_Connect.Connected := True;
      

  3.   

    MySQL := 'ALTER DATABASE DB_CLE SET ONLINE WITH ROLLBACK IMMEDIATE';
    这句话是把短开的数据库重新连接上
      

  4.   

    如果你在程序中连接过这个数据库,就不能释放,恢复时就会出现上述的问题。
    如果只是在程序中执行备份和恢复的工作,可以直接连接Sql Server的master数据库来执行。
      

  5.   

    with ADOQuery do
      begin
        Close;
        SQL.Clear;
        SQL.Add('use master Restore database XXX from dist='your path'');//xxx为你的数据库名
        execsql;
        
      end;