我写的下面代码:总是出现错误,不能实现数据备份!!
Q:=TADOQuery.create(nil);
Q.connection=con;
Q.close;
Q.sql.clear;
Q.sql.add('backup database mydb to disk='+''''+'C:\data\mydb.Bak'+'''');
Q.execsql;
总是提示错误:“无法打开备份设备,设备出现错误或设备脱机!”,请问这是什么原因,应该怎么改?谢谢了!!!

解决方案 »

  1.   

    'C:\data\mydb.Bak'存在这个备份设备吗??
      

  2.   

    procedure TBackupFrm.BitBtn2Click(Sender: TObject);
    begin
      if Edit1.Text= '' then
        begin
          Showmessage('无选择要保存的文件名');
          exit;
        end;
      try
        try
          dmData.adoQryTmp.Active:= false;
          dmData.adoQryTmp.SQL.Clear;
          dmData.adoQryTmp.SQL.Add(' BACKUP DATABASE [dzyl] TO DISK = '''+edit1.text+''' WITH INIT');
          dmData.adoQryTmp.ExecSQL;
        finally
          begin
            dmData.adoQryTmp.Active:= false;
            Showmessage('数据库备份成功!');
          end;
        end;
      except
      on e:exception do
        begin
          ShowMessage('数据库备份失败!');
        end;
      end;
    end;
      

  3.   

    哈哈  自己昨天刚写完var
          str:string;
      begin
          If Not OpenDialog1.Execute Then
            Exit;
          Screen.Cursor   :=   crHourGlass;
          try
              try
                  ADOQuery1.Close;
                  ADOQuery1.sql.clear;
                  ADOQuery1.sql.add(' use master');
                  ADOQuery1.sql.add('ALTER   DATABASE   kxcrm  SET  OFFLINE  WITH  ROLLBACK  IMMEDIATE');
                  ADOQuery1.execsql;
                  edit1.text:=ADOQuery1.SQL[0];
                  str   :=   'Restore   DataBase kxcrm from   disk =  '''+OpenDialog1.filename+'''';
                  edit2.text:=str;
                  ADOQuery1.Close;
                  ADOQuery1.sql.clear;
                  ADOQuery1.sql.add(str);
                  ADOQuery1.execsql;
                  ShowMessage('³É¹¦');
              except
                  ShowMessage('ÓÐÈËÁ¬½Ó£¬Ê§°Ü');
              end;
          finally
              Screen.Cursor   :=   crDefault;
          end;
    end;