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;
  • 相关阅读:
    九九乘法表
    获取1-10 的和,并打印 2.1-100 之间 7 的倍数的个数,并打印
    1-100之间 7 的倍数的个数,并打印
    无限循环的最简单的表现形式
    for 和 while 区别
    do while 和 while 区别
    if 和 switch 比较
    星期和月份
    【运筹优化】求职与工作思考 -求职需要的技能(一)
    python 在线笔试的OJ输入输出总结
  • 原文地址:https://www.cnblogs.com/bingege/p/1626821.html
Copyright © 2011-2022 走看看