• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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;

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap