打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi操作sql数据库的备份和强制还原

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;

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据库备份与还原(Delphi)
ODAC 3.0-----Delphi/BCB 开发的Oracle 数据库应用的利器
SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法
SQL2005定时备份
SQL Server 2008 R2每天自动备份数据库
Bitnami Redmine备份方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服