微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLSERVER数据库备份/恢复

unit Unit1;

interface

uses
  Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
  Dialogs,StdCtrls,DB,ADODB;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit; //IP输入框
    Edit2: TEdit; //数据库用户名
    Edit3: TEdit; //密码
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label4: TLabel;
    ComboBox1: TComboBox;//选择要操作的数据库下拉框
    Label5: TLabel;
    Edit4: TEdit;
    Button1: TButton;//备份
    Button2: TButton;//恢复
    dbcon: TADOConnection;
    Button3: TButton;//连接数据库
    DBRS: TADOQuery;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//登录数据

procedure TForm1.Button3Click(Sender: TObject);
begin
  if dbcon.Connected then
  begin
    Application.MessageBox(PCHAR('服务器已连接,请执行下一步!'),PCHAR(self.caption),MB_OK+MB_ICONERROR);
    exit;
  end;
  if trim(edit1.Text)='' then
  begin
    Application.MessageBox(PCHAR('请输入服务器地址(IP或机器名)!'),MB_OK+MB_ICON@R_407_4045@ION);
    exit;
  end;
  if trim(edit2.Text)='' then
  begin
    Application.MessageBox(PCHAR('请输入登录用户名!'),MB_OK+MB_ICON@R_407_4045@ION);
    exit;
  end;
  dbcon.ConnectionString:='Provider=sqlOLEDB.1;Password='+edit3.Text +
       ';Persist Security Info=True;User ID='+trim(edit2.Text )+
       ';Initial Catalog=master;Data Source='+trim(edit1.Text );
  try
    dbcon.open;
    dbrs.sql.Text :='select  name   from   sysdatabases where dbid>5 order by name';
    dbrs.Open ;
    while not dbrs.Eof do
    begin
      comboBox1.Items.Add(dbrs.fieldbyname('name').Asstring );
      dbrs.Next;
    end;
    dbrs.Close;
    Application.MessageBox(PCHAR('连接成功,请选择待备份或恢复的数据库!!'),MB_OK+MB_ICON@R_407_4045@ION);
  except
    Application.MessageBox(PCHAR('连接失败!'),MB_OK+MB_ICONERROR);
  end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dbrs.Close;
  dbcon.Close;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  dbcon.Close;
  comboBox1.Items.Clear ;
end;

//备份功能

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not dbcon.Connected then
  begin
    Application.MessageBox(PCHAR('服务器尚未连接,不能执行备份!'),MB_OK+MB_ICONWARNING);
    exit;
  end;
  if comboBox1.Text ='' then
  begin
    Application.MessageBox(PCHAR('请选择待备份的数据库!'),MB_OK+MB_ICONWARNING);
    exit;
  end;
  SaveDialog1.FileName :=comboBox1.Text+formatdatetime('_YYYYMMDD_HHMMSS',Now);
  if not SaveDialog1.Execute then exit;
  edit4.Text :=SaveDialog1.FileName ;
  try
    dbcon.Execute('backup database '+comboBox1.text+' to disk='+''''+edit4.Text+'''' );
    Application.MessageBox(PCHAR('备份成功!'),MB_OK+MB_ICON@R_407_4045@ION);
  except
    Application.MessageBox(PCHAR('备份失败!'),MB_OK+MB_ICONERROR);
  end;
end;

//恢复功能

procedure TForm1.Button2Click(Sender: TObject);
begin
  if not dbcon.Connected then
  begin
    Application.MessageBox(PCHAR('服务器尚未连接,不能执行恢复!'),MB_OK+MB_ICONWARNING);
    exit;
  end;
  if comboBox1.Text ='' then
  begin
    Application.MessageBox(PCHAR('请选择待恢复的数据库!'),MB_OK+MB_ICONWARNING);
    exit;
  end;
  if not OpenDialog1.Execute then exit;
  edit4.Text :=OpenDialog1.filename;
  try
    dbcon.Execute('restore database '+comboBox1.text+' from disk='+''''+edit4.Text+'''' );
    Application.MessageBox(PCHAR('恢复成功!'),MB_OK+MB_ICON@R_407_4045@ION);
  except
    Application.MessageBox(PCHAR('恢复失败!'),MB_OK+MB_ICONERROR);
  end;

end;

end.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐