zoukankan      html  css  js  c++  java
  • delphi操作sql数据库的备份和强制还原

    procedure TFrmMain.NSystBackupClick(Sender: TObject);
    var strFile:string;
    begin
      //  数据库备份
      SaveDlgData.Filter:='All files (*.*)|*.*';
      SaveDlgData.FileName:='DataBack'+DateToStr(now);
      if SaveDlgData.Execute then
      begin
        strFile:=SaveDlgData.FileName;
        StatusBar1.Panels[1].Text:='正在备份数据库...';
        DataModuleMain.ADOQBack.Close;
        DataModuleMain.ADOQBack.SQL.Clear;
        DataModuleMain.ADOQBack.SQL.Add('backup database DangerWaste to disk='''+strFile+''' ');
       
        try
          DataModuleMain.ADOQBack.ExecSQL;
          Application.MessageBox(pchar('数据库已经备份到'+strFile+'!'),'提示',MB_OK+MB_ICONINFORMATION );
          //write log
          DataModuleMain.AddLog(currentUser.Name,'备份数据库到'+strFile,DateTimeTostr(now));
          StatusBar1.Panels[1].Text:='';
        except
          Application.MessageBox('文件写入错误!','错误',MB_OK+MB_ICONERROR );
        end;
      end;
    end;
    procedure TFrmMain.NSysRestoreClick(Sender: TObject);
    //数据库还原
    var strFile:string;
    begin
      if OpenDlgRestore.Execute then
      begin
       
        strFile:=OpenDlgRestore.FileName;
        if messagedlg('是否确定还原',mtconfirmation,[mbyes,mbno],0)=mryes then
        begin
          StatusBar1.Panels[1].Text:='正在恢复数据库...';
          try
            with DataModuleMain do
            begin
              ADOConnMain.Close;
              ADOConnectRestore.Open();//主义这个connection连接的是master数据库
              ADOQRestore.Close;
              ADOQRestore.SQL.Clear;
              ADOQRestore.SQL.Add('ALTER DATABASE DangerWaste SET OFFLINE WITH ROLLBACK IMMEDIATE');
              ADOQRestore.ExecSQL;
              ADOQRestore.Close;
              ADOQRestore.SQL.Clear;
              ADOQRestore.SQL.Add('restore database DangerWaste From disk='''+strFile+''' ');
              ADOQRestore.ExecSQL;
              ADOConnectRestore.Close;
              ADOConnMain.Connected:=true;
            end;
            Application.MessageBox(pchar('数据库恢复成功!'),'提示',MB_OK+MB_ICONINFORMATION );
            DataModuleMain.AddLog(currentUser.Name,'还原数据库从'+strFile,DateTimeTostr(now));
            StatusBar1.Panels[1].Text:='';
          except
            Application.MessageBox('数据库联接错误','错误',MB_OK+MB_ICONERROR);
          end;
        end;
      end;
    end;
  • 相关阅读:
    2019年技能学习计划
    EVM项目管理
    常用LINQ关键字用法汇总
    如何让Enum枚举实现异或操作
    使用COM打开Excel文档注意事项
    C#使用NPOI读写Excel的注意事项
    应用国际化多语言化实现方法
    DLL简单分析与调用方法
    C#读写Excel实践笔记
    Vue基础开发笔记
  • 原文地址:https://www.cnblogs.com/bingege/p/1626821.html
Copyright © 2011-2022 走看看