各位:
是这样的因为我操作的数据库比较大,时间一长速度明显减慢!
因此我想对它定期整理,把原来的数据导出后再将数据库置空
具体怎么做就要请各位帮个忙啊
谢谢!!!!!!!!!!

解决方案 »

  1.   

    你用的是什么数据库?SQL Server 还是Access或别的?
      

  2.   

    顶!
    如果用的是Access数据库,该怎么做?
      

  3.   

    我用的是sql server
    用delphi 具体怎么写啊
      

  4.   

    Access:
    读文件  存文件到另一个地方
    SQL server:
    BACKUP DATABASE 数据库 TO 'c:\aaa'
    RESTORE DATABASE 数据库
    FROM 'c:\aaa'
    WITH NORECOVERY, 
    MOVE 'MyNwind' TO 'c:\mssql7\data\NewNwind.mdf', 
    MOVE 'MyNwindLog1' TO 'c:\mssql7\data\NewNwind.ldf'
    恢复并删除原来的
    也就是覆盖
      

  5.   

    用delphi 的写法:
    with query do
    begin
      close;
      sql.clear;
      sql.add('backup database 数据库 to '+ ' '+ edit1.text)//edit1.text为路径
      try
        execsql;
      except
        showmessage('备份数据出错,请重新操作');
      end;
      showmessage('数据备份成功');
    end;
    同样
    sql.add('RESTORE DATABASE 数据库
    FROM ' + '' + edit1.text);
      

  6.   

    如果数据库是oracle数据库呢,要完全备份,又该怎么办呢?
      

  7.   

    照你的做了
    可是不行啊
    :  with DataModule2.Query1 do
      begin
        close;
        sql.clear;
        sql.add('backup database sfdata to '''+edit1.text+'''');
        showmessage(SQL.Text);
        try
          ExecSQL;
          showmessage('back ok');
        except
          showmessage('back failure');
        end;
      end;
    请问那里错了啊
      

  8.   

    (8).备份和恢复  这是Sqlserver的,access的话直接拷贝文件就可以了
        procedure TForm1.Button1Click(Sender: TObject);
        begin
          if OpenDialog1.Execute then
          begin
            try
              adoconnection1.Connected:=False;
              adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=FRIEND-YOFZKSCO;'+
              'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=FRIEND-YOFZKSCO;Use Encryption for Data=False;Tag with column collation when possible=False';
              adoconnection1.Connected:=True;
              with adoQuery1 do
              begin
                Close;
                SQL.Clear;
                SQL.Add('Backup DataBase sfa to disk ='''+opendialog1.FileName+'''');
                ExecSQL;
              end;
            except
              ShowMessage('±?·Y꧰ü');
            Exit;
            end;
          end;
          Application.MessageBox('1§?2?ú£?êy?Y±?·Y3é1|','ìáê?',MB_OK + MB_ICONINFORMATION);
        end;
        procedure TForm1.Button2Click(Sender: TObject);
        begin
          if OpenDialog1.Execute then
          begin
            try
              adoconnection1.Connected:=false;
              adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=FRIEND-YOFZKSCO;'+
              'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=FRIEND-YOFZKSCO;Use Encryption for Data=False;Tag with column collation when possible=False';
              adoconnection1.Connected:=true;
              with adoQuery1 do
              begin
                Close;
                SQL.Clear;
                SQL.Add('Restore DataBase sfa from disk ='''+opendialog1.FileName+'''');
                ExecSQL;
             end;
           except
             ShowMessage('???′꧰ü');
             Exit;
           end;
         end;
         Application.MessageBox('1§?2?ú£?êy?Y???′3é1|','ìáê?',MB_OK + MB_ICONINFORMATION);
        end;
      

  9.   

    我用
      with adoquery1 do
      begin
        sql.Text := 'BACKUP DATABASE tmp to disk=' + QuotedStr(edit1.Text);
        ExecSQL;
      end;
    数据库(SQL SERVER2000)备份没有问题,但在用
      with adoquery1 do
      begin
        sql.Text := 'restore DATABASE tmp from disk=' + QuotedStr(edit1.Text);
        ExecSQL;
      end;
    恢复数据库的时候遇到了问题:
    ‘因为数据库正在使用,所以未能获得对数据库的排她访问。’
    我已经在执行恢复前关闭了“企业管理器”和“查询分析器”,请问,这是怎么回事呢?如何解决这个问题(如何恢复数据库)
      

  10.   

    'BACKUP DATABASE tmp to disk=' + QuotedStr(edit1.Text);改成这样就OK了'use master BACKUP DATABASE tmp to disk=' + QuotedStr(edit1.Text);
      

  11.   

    备份数据库好象不用“use master”的,我看了其他帖子,
    with adocommand_restore do//用AdoCommand控件
             begin
              CommandText:='use Master';
              Execute;
              CommandText:='execute sp_helpdevice';
              Execute ;
              CommandText:='Restore database '+db_name+'From disk='''+FileName+''' with replace';
              Execute ;
              CommandText:='Use '+db_name;
              Execute ;
              end;
    不明白为什么要用
              CommandText:='execute sp_helpdevice';
              Execute ;
    请高手指点。
      

  12.   

    这样的恢复过程好象很慢!!!才2M的数据库(备份文件),在C466,HY256SDRAM的机器上跑,要等差不多1分钟!有没有其他更快的方法呢?另外,如果在备份时开“企业管理器”,备份也是提示说“因为数据库正在使用,所以未能获得对数据库的排她访问。”的错误