zoukankan      html  css  js  c++  java
  • 如何实现SQL Server数据库的备份与恢复

    备份:
    procedure TBackupFrm.BitBtn2Click(Sender: TObject);
    begin
    if Edit1.Text= ' then
    begin
    Showmessage('无选择要保存的文件名');
    exit;
    end;
    try
    try
    dmData.adoQryTmp.Active:= false;
    dmData.adoQryTmp.SQL.Clear;
    dmData.adoQryTmp.SQL.Add('BACKUP DATABASE [dzyl] TO DISK = ''+edit1.text+'' WITH INIT');
    dmData.adoQryTmp.ExecSQL;
    finally
    begin
    dmData.adoQryTmp.Active:= false;
    Showmessage('数据库备份成功!');
    end;
    end;
    except
    on e:exception do
    begin
    ShowMessage('数据库备份失败!');
    end;
    end;
    end;
    ---------------------------
    恢复
    procedure TBackupFrm.BitBtn4Click(Sender: TObject);
    begin
      if Edit2.Text = ' then
      begin
        showmessage('未选择要恢复的数据库文件!');
        exit;
      end;
      with dmData do
      begin
        try
          adocmmd.CommandText:='use master';
          adocmmd.Execute;
          adocmmd.CommandText:='alter database dzyl set offline with rollback immediate';
          adocmmd.Execute;
          adocmmd.CommandText:='restore database dzyl from disk= ''+edit2.Text+'' with

    recovery ';
          adocmmd.Execute;
          adocmmd.CommandText:=' alter database dzyl set online with rollback immediate';
          adocmmd.Execute;
          showmessage('数据库恢复成功!');
          application.Terminate;
        except
          on e:exception do
          begin
            showmessage('数据库恢复失败!'+e.Message);
          end;

      end;
    end;
    其中dmData.adoQryTmp连接的是系统MASTER数据库,备份还原之前应该关闭要备份还原的AdoConn数据库

    连接AdoConn.Connected:=False;
    ------------------------------------------------
    另一方法:
    备份如下:
            try
                backupString := 'BACKUP DATABASE [Paper] TO  DISK = N''+edit1.Text+'' WITH  

    INIT ,  NOUNLOAD ,  NAME = N'Paper 备份',  NOSKIP ,  STATS = 10,  NOFORMAT';
                adoquery1.Close;
                adoquery1.SQL.Clear;
                adoquery1.SQL.Add(backupString);
                ADOQuery1.Prepared;
                adoquery1.ExecSQL;
                application.MessageBox('备份成功。','提示',0);
            except
                application.MessageBox('备份出错!请重新备份数据。','出错',0);
            end;
    ---------------------------
    还原如下:
                if opendialog1.Execute then
                begin
                    try
                        adoquery1.Close();
                        adoquery1.SQL.Clear;
                        adoquery1.SQL.Add('use master');
                        adoquery1.Prepared;
                        adoquery1.ExecSQL;
                        restorestring := 'RESTORE DATABASE [Paper] FROM  DISK =

    N''+opendialog1.FileName+'' WITH  FILE = 1,  NOUNLOAD ,  STATS = 10,  REPLACE,RECOVERY';
                        self.ADOCommand1.CommandText := restoreString;
                        adocommand1.Execute;
                        application.MessageBox('还原数据成功','提示',0);

                        adoquery1.Close();
                        adoquery1.SQL.Clear;
                        adoquery1.SQL.Add('use paper');
                        adoquery1.Prepared;
                        adoquery1.ExecSQL;          
                    except
                        application.MessageBox('还原数据出错!请重新还原,并停止一切的数据操作!

    ','提示',0);
                    end;
                end;

  • 相关阅读:
    项目工作总结 (转)
    mysql-笔记 操作语句
    QTP自动化测试-excel sheet页数量过多--但是不能在qtp里被识别
    mysql-笔记 定义语句
    HDU
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631474.html
Copyright © 2011-2022 走看看