📄 business_restor.pas
字号:
unit BUSINESS_RESTOR;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ADODB, DB, ActnList,INIPAS,
StdActns, registry, EASY_GASMAIN;
type
Trestoredlg = class(TForm)
ADOC: TADOConnection;
ADOCOMM: TADOCommand;
Edit2: TLabeledEdit;
Edit3: TLabeledEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit4: TLabeledEdit;
Edit1: TLabeledEdit;
Bevel1: TBevel;
ActionList1: TActionList;
OPE: TFileOpen;
WINSA: TCheckBox;
DBPATH: TLabeledEdit;
Label1: TLabel;
Label2: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure OPEAccept(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBPATHExit(Sender: TObject);
procedure WINSAClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
restoredlg: Trestoredlg;
implementation
{$R *.dfm}
Function GetSQLPath:String;
var REG:TRegistry;
Begin
REG:=TRegistry.Create;
With REG do
begin
try
RootKey:=HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\MSSQLServer\Setup',false);
Result:=REG.ReadString('SQLPath');
finally
CloseKey;
REG.Free;
end;
end;
end;
procedure Trestoredlg.BitBtn1Click(Sender: TObject);
var S:String;
begin
try
ADOC.Close;
if WINSA.checked then ADOC.connectionstring:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source='+Edit1.text else
ADOC.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+Edit2.text+';Initial Catalog=master;Data Source='+Edit1.text+';password='+Edit3.text;
S:=StringReplace(ADOC.ConnectionString,'master','EASY_GAS',[rfReplaceAll, rfIgnoreCase]);
WriteINIStr('网络设置','数据库连接字符',S);
ADOC.Open;
ADOCOMM.commandtext:='RESTORE DATABASE EASY_GAS FROM DISK = '+#39+Edit4.text+#39+' WITH MOVE '+#39+'EASY_GAS_data'+#39+' TO '+#39+DBPATH.text+'EASY_GAS_NOW.mdf'+#39+', MOVE '+#39+'EASY_GAS_log'+#39+' TO '+#39+DBPATH.text+'EASY_GAS_NOW.ldf'+#39;
ADOCOMM.Execute;
Showmessage('数据库恢复成功,'+#13+'原数据库已恢复!');
Except
Showmessage('数据库恢复失败!');
Exit;
end;
Close;
end;
procedure Trestoredlg.OPEAccept(Sender: TObject);
begin
Edit4.Text:=OPE.Dialog.FileName;
end;
procedure Trestoredlg.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Case key of
VK_RETURN:PostMessage(TWincontrol(Sender).handle,WM_KEYDOWN,VK_TAB,0);
end;
end;
procedure Trestoredlg.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure Trestoredlg.FormCreate(Sender: TObject);
var REG:TREGistry;
begin
Bitbtn1.enabled:=DirectoryExists(GetSQLPath);
Edit1.Text:=ReadINIStr('数据还原','服务器IP',PCNAME);
Edit2.Text:=ReadINIStr('数据还原','用户名称','SA');
Edit3.Text:=ReadINIStr('数据还原','用户密码','');
Edit4.Text:=ReadINIStr('数据还原','文件位置',ClientDIR+'DATABASE');
REG:=TRegistry.Create;
With REG do
begin
try
RootKey:=HKEY_LOCAL_MACHINE;
if Not KeyExists('Software\Microsoft\MSSQLServer\Setup') then
Begin
Showmessage('您没有安装Microsoft SQL Server!程序无法安装!');
Halt;
end;
OpenKey('Software\Microsoft\MSSQLServer\Setup',false);
DBPATH.Text:=REG.ReadString('SQLDataRoot');
DBPATH.OnExit(DBPATH);
finally
CloseKey;
REG.Free;
end;
end;
end;
procedure Trestoredlg.DBPATHExit(Sender: TObject);
begin
if DBPATH.text[Length(DBPath.Text)]<>'\' then DBPATH.Text:=DBPATH.Text+'\';
end;
procedure Trestoredlg.WINSAClick(Sender: TObject);
begin
Edit2.Enabled:=Not WINSA.Checked;
Edit3.Enabled:=Not WINSA.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -