⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 数据库备份与还原
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ADODB, Db, Buttons, DBTables;

type
  TForm1 = class(TForm)
    ADOCommand1: TADOCommand;
    OpenDialog1: TOpenDialog;
    GroupBox1: TGroupBox;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    SpeedButton1: TSpeedButton;
    Button1: TButton;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    GroupBox3: TGroupBox;
    Label6: TLabel;
    Label7: TLabel;
    SpeedButton2: TSpeedButton;
    Edit6: TEdit;
    Edit7: TEdit;
    Button2: TButton;
    GroupBox4: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    SpeedButton3: TSpeedButton;
    Edit8: TEdit;
    Edit9: TEdit;
    Button3: TButton;
    GroupBox5: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    SpeedButton4: TSpeedButton;
    Edit10: TEdit;
    Edit11: TEdit;
    Button4: TButton;
    Label12: TLabel;
    Edit12: TEdit;
    Edit13: TEdit;
    SpeedButton5: TSpeedButton;
    Label13: TLabel;
    SaveDialog1: TSaveDialog;
    Edit14: TEdit;
    Edit15: TEdit;
    SpeedButton6: TSpeedButton;
    Label14: TLabel;
    Label15: TLabel;
    ADOQuery1: TADOQuery;
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOCommand1.ConnectionString:='Provider=SQLOLEDB.1;Password='+EDIT3.TEXT+';Persist Security Info=True;User ID='+EDIT2.TEXT+';Initial Catalog=master;Data Source='+Edit1.TEXT+'';
  ADOCommand1.CommandText:=' sp_attach_db '+'''' +EDIT4.TEXT+''''+','+ ''''+EDIT5.Text+'''';
  ADOCommand1.Execute;
  showmessage('附加数据库成功');
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  //选择*.mdf)
  if OpenDialog1.Execute then
    EDIT5.Text:=OpenDialog1.FileName;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
  //存放位置(*.mdf)
  SaveDialog1.FileName :=Edit10.text+'_Date.mdf';
  if SaveDialog1.Execute then

    EDIT11.Text:=SaveDialog1.FileName;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
var sqlstr :string;
begin
  //选择备份文件名
  if OpenDialog1.Execute then
    EDIT13.Text:=OpenDialog1.FileName;


   //得到逻辑文件名
   ADOQuery1.ConnectionString :='Provider=SQLOLEDB.1;Password='+EDIT3.TEXT+';Persist Security Info=True;User ID='+EDIT2.TEXT+';Initial Catalog=master;Data Source='+Edit1.TEXT+'';
   with ADOQuery1 do
   begin
     if active then close;
     sql.clear;
     sqlstr :=' RESTORE FILELISTONLY FROM DISK = '+QuotedStr(Edit13.text) ;
     sql.Add(sqlstr);
     open;
     first;
     Edit12.text:= fields[0].asstring;
     next;
     Edit14.text := fields[0].asstring ;
     close;
   end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var sqlstr :string;
begin
   //还原成新数据库
   sqlstr :='RESTORE DATABASE '+Edit10.text;
   sqlstr :=sqlstr+' FROM DISK = '+QuotedStr(Edit13.text);
   sqlstr :=sqlstr+' WITH MOVE '+QuotedStr(Edit12.text)+' TO '+QuotedStr(Edit11.text)+',';
   sqlstr :=sqlstr+' MOVE '+QuotedStr(Edit14.text)+' TO '+QuotedStr(Edit15.text);
   ADOCommand1.ConnectionString:='Provider=SQLOLEDB.1;Password='+EDIT3.TEXT+';Persist Security Info=True;User ID='+EDIT2.TEXT+';Initial Catalog=master;Data Source='+Edit1.TEXT+'';
   ADOCommand1.CommandText:=sqlstr;
   ADOCommand1.Execute;
     showmessage('还原成新数据库成功');
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
  //存放位置(*.ldf)
  SaveDialog1.FileName :=Edit10.text+'_Log.ldf';
  if SaveDialog1.Execute then
    EDIT15.Text:=SaveDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
var sqlstr :string;
begin
  //备份数据
  sqlstr :=' backup database ' +Edit6.text ;
  sqlstr :=sqlstr+'   to disk= '+QuotedStr(Edit7.text);
  ADOCommand1.ConnectionString:='Provider=SQLOLEDB.1;Password='+EDIT3.TEXT+';Persist Security Info=True;User ID='+EDIT2.TEXT+';Initial Catalog=master;Data Source='+Edit1.TEXT+'';
  ADOCommand1.CommandText:=sqlstr;
  ADOCommand1.Execute;
     showmessage('备份数据库成功');
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  //存储备份文件名
  SaveDialog1.FileName :=Edit6.text+DateTostr(now);
  if SaveDialog1.Execute then
    EDIT7.Text:=SaveDialog1.FileName;
end;

procedure TForm1.Button3Click(Sender: TObject);
var sqlstr :string;
begin
  //还原数据库
  sqlstr :=' RESTORE DATABASE ' +Edit8.text ;
  sqlstr :=sqlstr+' FROM disk = '+QuotedStr(Edit9.text);
  ADOCommand1.ConnectionString:='Provider=SQLOLEDB.1;Password='+EDIT3.TEXT+';Persist Security Info=True;User ID='+EDIT2.TEXT+';Initial Catalog=master;Data Source='+Edit1.TEXT+'';
  ADOCommand1.CommandText:=sqlstr;
  ADOCommand1.Execute;
     showmessage('还原数据库执行成功');
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  //选择备份文件名
  if OpenDialog1.Execute then
    EDIT9.Text:=OpenDialog1.FileName;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -