在FORM上放一些控件(什么控件我忘了),这些控件用来指明要备份到的磁盘。这包括两个控件,一个指明磁盘,另外一个指明对应的文件夹。 另外,如何备份数据库,请给出响应的原代码先谢了。

解决方案 »

  1.   

    Sql.Text := 'Backup DataBase DataBaseName to Disk = ''D;\Db.Bak''' ;
      

  2.   

    简单的备份这个数据库的方法:
      Copyfile(源文件,目标文件,Boolean(是否直接覆盖同名文件));
      

  3.   

    wjlsmail(计算机质子) 提供的办法只能备份到服务器上,也就是说是服务器的D盘,我也是这么用的,没有做过备份到本机上的实验,谁有好的办法?
    to joky1981(),你的办法能成功吗?你的意思是直接备份数据库物理文件吧,如果是SQL Server的话,服务正在启动时,你应该是拷贝不动地!请说明一下,多谢:)
      

  4.   

    这样试一下 :
    backup Database DataBaseName to disk = '\\PcName\ShareDir\Db.bak'  应该能备份到本地(我没有环境不能测试但单机用这种格式通过)
      

  5.   

    BDE 下还有一个 TBatchMove 控件也可以用来作备份
      

  6.   

    wjlsmail(计算机质子) :这样的话确实是一定可以,不过你要共享目录的,而且要完全共享,安全难以保障吧:(TBatchMove应该是可以的,但是小弟不才,没有用过
      

  7.   

    那就备份到服务器行了:) 最安全了:) TBatchMove 指定Source,Destination ,设定了相应的 Mode 后 Execute 就可以了
     
      

  8.   

    兄弟们,我用的是 DELPHI 6.0 SQL SERVER 2000,另外,我把数据库具体备份到哪个盘下,哪个目录下,完全由用户来选择,如何备份?
      

  9.   

    并且,在同一个FORM上放一个静态文本,用来指示备份到的文件夹。比如,我磁盘选的是D盘,然后文件夹选的是D盘下的 AA, 那么这个静态文本就显示 D:\AA,如何做?
      

  10.   

    那我这样写:
    backup database medicine 
    to tape 'D :\ backup ' 
     with format,
      name = aa
    把数据库medicine 备份到 d:\backup下的aa文件,怎么不行?
      

  11.   

    用的是 Disk ,不是 Tape{ DISK | TAPE } = 
    'physical_backup_device_name' | @physical_backup_device_name_var 
    允许在指定的磁盘或磁带设备上创建备份。在执行 BACKUP 语句之前不必存在指定的物理设备。如果存在物理设备且 BACKUP 语句中没有指定 INIT 选项,则备份将追加到该设备。 
    当指定 TO DISK 或 TO TAPE 时,请输入完整路径和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。backup database medicine 
    to Disk =  'D :\ backup ' 
      

  12.   

    up,以前我用sql 7 不能进行网络备份,不知道现在2000行不行了:(
    当时我走了一点弯路,先在服务器上备份以后,再进行文件拷贝
    不过我直到现在也不太支持。
      

  13.   

    多谢wjlsmail(计算机质子)大侠的解释,放到服务器确实是安全些。楼主的DBMS采用的是SQL Server如果程序写死这个备份路径,在执行备份时,先前备份文件并不是被覆盖掉,而是文件尺寸继续增加,比如原来数据库是1兆,现在再备份时就文件就会变为2兆,不知道这是为什么?请高手指教。
    to 楼主:您用的是SaveDialog吧,取得用户选择的路径非常容易,我就不废话了,一查就搞定!
      

  14.   

    选择路径就用SelectDirectory()函数就可以
    备份方法:
        1、copyfile()
        2、SQL语句
        3、ADODataset封装有一个SaveToFile()
        4、TBatchMove
        本地是没有问题了,我这里没有网络环境,不能确定在C/S模型下是否都可行。有待大家进一步讨论
      

  15.   

    ------------------------------------------------------------------
    最简单的SQL语句:备份与还原SQL Server自带的数据库在服务器上备份:
    use Northwind
    Backup database Northwind to disk='d:\Northwind_bak.dat' with initRESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bak.dat'------------------------------------------------------------------
    备份数据库这一操作在客户机上实现 
    客户机:machine
    共享目录:share (要完全共享,可写权限)backup:
    bakcup database dbname to disk='\\machine\share\data.bak' with init
    \\machine\share目录要有写权限。restore:
    restore database dbname from disk='\\machine\share\data.bak' 
    //
    备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下
      with replace, move 'dbname_dat' to 'c:\mssql7\data\dbname.mdf', 
       move 'dbname_log' to 'c:\mssql7\data\dbname.log'
    其中'c:\mssql7\data\'是服务器的目录,这点要注意------------------------------------------------------------------------------备份与还原数据库的相关内容:
    SQL Server 7.0数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 ...... 数据库日志是实时的,他忠实的记录下所有对数据库的更新操作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的操作重新在做一遍,从而将数据库完全恢复。
    --备份完整的数据库---------------------------------------------------------------
    //创建一个备份设备:
    -- 1. Create the backup device for the full MyNwind backup.///
    USE master
    EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2.dat'-- 2. Back up the full MyNwind database.BACKUP DATABASE MyNwind TO MyNwind_2--备份数据库的日志--------------------------------------------------------------- 
    --1. Create the log backup device.USE master
    EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1.dat'--2.  Update activity has occurred before this point. Back up the log of the MyNwind database.BACKUP LOG MyNwind TO MyNwindLog1-------
    try
    AdoQuery1.Close;
    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('backup database pubs');
    AdoQuery1.SQL.Add('to disk='+''''+edtPath.Text+'''');
    AdoQuery1.ExecSQL;
    except
      ShowMessage('备份数据库失败!');
      exit;
    end;
    注:参阅了《大本营3.0》