用如下这段代码只能备份客户机的数据库
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    begin
      try
        adoconnection1.Connected:=True;
        with adoQuery1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('Backup DataBase a to disk ='''+opendialog1.FileName+'''');
          ExecSQL;
        end;
      except
      Exit;
    end;
  end;
end;
但是备份服务器的数据库会提示找不到备份设备
怎样备份服务器的数据呢?

解决方案 »

  1.   

    opendialog1.FileName  是你本机的地址而SQL.Add('Backup DataBase a to disk ='''+opendialog1.FileName+''''); 传到后台的时候,就会被当作服务器的目录地址
      

  2.   

    在Sql Server 中,发出 Backup DataBase的命令,实际上是不能将数据备份到客户机上的,后面的 Disk 参数事实上是SQL Server 服务器上的路径;
    如果你一定要备份到客户机上,可以考虑:
    1 首先备份到服务器的指定目录下;
    2 从服务器上将备份出来的文件拷贝的客户机上;
      

  3.   

    不如不用opendialog,还是用edit写吧
      

  4.   

    var
      nowdate,bakname:String;
    begin
      dm.c_backup.CommandText:='backup database oldwater to disk=:filename';
      nowdate:=formatdatetime('yyyy-MM-dd',now);
      savedialog1.Title:='请输入您要备份的数据文件名称...';
      saveDiaLog1.FileName:=nowdate;//一定要加上
      savedialog1.Filter:='bak files (*.bak)|*.bak';
      if savedialog1.Execute then begin
        bakname:=savedialog1.FileName+'.bak';
        dm.c_backup.Parameters.ParamByName('filename').Value:=bakname;
        dm.c_backup.Execute;
        showmessage('您已经成功备份,请妥善保存!');
      end;
    end;
      

  5.   

    自己些个吧!
    简单例子:
       mydataset :Tdataset;
       begin
          一个表的处理
          mydataset.commondtext :='select * from tablename '
          mydataset.open;
          mydataset.savefile('c:\temp\文件名字');
       end;
       也能用dbgrid打开。
       mydataset1.loadfile('c:\temp\文件名字')
       mydataset1.open;
    ------------------------记的不算清楚,但是一能办到你说得哪个样子
      

  6.   

    zcfzcf001(zcf)  你说的办法是把记录集里的数据备份为文件!如果备份为数据库的格式看看有没有存储过程!
      

  7.   

    主  题:  关于数据库备份与恢复  
    作  者:  chizengkun (Bryan)  
    等  级:    
    信 誉 值:  100  
    所属社区:  Delphi 数据库相关  
    问题点数:  0  
    回复次数:  1  
    发表时间:  2004-09-29 14:14:00  
       
     
       
    可以有几种不同的形式来实现(SQL SERVER2000)数据库的备份与恢复:
    一、使用连机与脱机状态
    语句为:
    ALTER DATABASE DBName SET OFFLINE WITH ROLLBACK IMMEDIATE(将数据库转为脱机状态后使用数据恢复语句:Use master;Restore DataBase DBName from DISK=N'''+FilePath+''' WITH  FILE = 1, Replace,Recovery(后面的参数可能还有多种)
    )
    在数据库恢复后,使用语句将数据库的脱机状态转为连机状态,语句为:
    Alter database DBName set online with rollback immediate 数据就可能恢复了。
    二、停止整个数据库,后恢复
    使用语句为sp_Detach_db DBName卸下数据库 
    连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db
    s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]
    sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name 
    此语句可将数据库下的整个文件全部的进行拷贝与粘贴等操作,在连接数据库时使用物理路径如:
    sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'
    sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'