你可以用TClientDataSet这个控件进行数据备份和还原,我用过挺好用的只不过要自己具体控制一下,如果你要的是Sql 的备份和还原你可以看看Sql server2000的帮助很权的(最要紧的是中文呀)

解决方案 »

  1.   

    谢谢您的回复,我没有用的是Sql Server 2000,您可否将帮助文件发给我呢?我也是很怕看英文,所以才发问的。e-mail: [email protected]
      

  2.   

    用SQL语句写存储过程。关键字:BACKUP
    备份整个数据库:BACKUP DATABASE { database_name | @database_name_var } 
    TO < backup_device > [ ,...n ] 
    [ WITH
        [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
        [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
        [ [ , ] DIFFERENTIAL ]
        [ [ , ] EXPIREDATE = { date | @date_var }
            | RETAINDAYS = { days | @days_var } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] FORMAT | NOFORMAT ]
        [ [ , ] { INIT | NOINIT } ]
        [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
        [ [ , ] { NOSKIP | SKIP } ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ] 
    ]
      

  3.   

    备份一个事务日志:BACKUP LOG { database_name | @database_name_var } 
    {
        TO < backup_device > [ ,...n ]
        [ WITH
            [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
            [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
            [ [ ,] EXPIREDATE = { date | @date_var }
                | RETAINDAYS = { days | @days_var } ]
            [ [ , ] PASSWORD = { password | @password_variable } ]
            [ [ , ] FORMAT | NOFORMAT ]
            [ [ , ] { INIT | NOINIT } ]
            [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
            [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
            [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
            [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
            [ [ , ] NO_TRUNCATE ]
            [ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
            [ [ , ] { NOREWIND | REWIND } ]
            [ [ , ] { NOSKIP | SKIP } ]
            [ [ , ] { NOUNLOAD | UNLOAD } ]
            [ [ , ] RESTART ]
            [ [ , ] STATS [ = percentage ] ] 
        ] 
    } < backup_device > ::=
        { 
            { logical_backup_device_name | @logical_backup_device_name_var }
            | 
            { DISK | TAPE } =
                { 'physical_backup_device_name' | @physical_backup_device_name_var }
        } < file_or_filegroup > ::=
        { 
            FILE = { logical_file_name | @logical_file_name_var }
            | 
            FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } 
        } 
      

  4.   

    sailer_shi(笨笨虫) :
    你说的可以用TClientDataSet这个控件进行数据备份和还原
    我是在用delphi5+SQLServer7+ADO 三层具体的方法是怎么样的呢?
      

  5.   

    我想问唐僧一个问题,就是你用SQL备份和还原的时候你先要建立一个物理设备,如果这个物理地址不存在是先要建立,如果存在的话,那么要覆盖以前备份的数据库,请问这是怎么实现的
      

  6.   


      
    procedure  TForm_main.ac_db_backupExecute(Sender:  TObject);  
    begin  
        if  form_backup.showmodal=  mrOK  then  begin  
            {----开始备份----}  
            with  Database1  do  begin  
                try  
                    Close;  
                    Execute('BACKUP  DATABASE  l_CLQC  TO  DISK  =  '''+dir1+'\'+  DateToStr(now)+  '.bak''');  
                    sbar_main.SimpleText  :='备份完毕';  
                    MessageDlg('备份完毕!',mtInformation,[mbOK],0);  
                except  
                    sbar_main.SimpleText  :='备份失败';  
                    MessageDlg('备份失败,请重试!',mtError,[mbOK],0);  
                end;  
                Open;  
            end;  
      
        end;  
    end;  
    //----------------------恢复----------------  
      
        //First  connect  to  Database  master,Omitted....注意with  Replace参数  
    with  Database1  do  begin//[  
                        Execute('use  master');  
                        Execute('RESTORE  DATABASE  l_clqc  FROM  DISK  ='''+  s  +''''+'  with  Replace  ');  
    end;