📄 c1.pas
字号:
unit C1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzStatus, RzPrgres, RzPanel, RzButton, StdCtrls, RzLabel,
RzBckgnd, ExtCtrls,IniFiles, DB, ADODB, Mask, RzEdit, BusinessSkinForm;
type
TForm1 = class(TForm)
RzPanel13: TRzPanel;
RzBackground2: TRzBackground;
TITL: TRzLabel;
RzPanel15: TRzPanel;
RzBackground3: TRzBackground;
RzBitBtn1: TRzBitBtn;
RzStatusBar1: TRzStatusBar;
RzProgressBar1: TRzProgressBar;
ADOConnection1: TADOConnection;
RzEdit1: TRzEdit;
RzEdit2: TRzEdit;
RzLabel6: TRzLabel;
RzLabel1: TRzLabel;
bsBusinessSkinForm1: TbsBusinessSkinForm;
procedure RzBitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
server, dataBaseName: string;
myinifile: Tinifile;
adorestore: TAdocommand;
SQLSTRING:widestring;
implementation
{$R *.dfm}
procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
//创建恢复数据库用的存储过程
RzProgressBar1.TotalParts:=10;
//setup1
adorestore.CommandText:='use Master';
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
//setup2
SQLSTRING:='';
SQLSTRING:='if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[p_killspid]'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1) drop procedure [dbo].[p_killspid]';
adorestore.CommandText:=SQLSTRING;
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
//SETUP3 //创建P_KILLSPID存储过程,用于以后还源数据库或创建数据。
SQLSTRING:='';
SQLSTRING:=SQLSTRING+'create proc p_killspid ';
SQLSTRING:=SQLSTRING+'@dbname varchar(200) ';
SQLSTRING:=SQLSTRING+'as ';
SQLSTRING:=SQLSTRING+'declare @sql nvarchar(500) ';
SQLSTRING:=SQLSTRING+'declare @spid nvarchar(20) ';
SQLSTRING:=SQLSTRING+'declare #tb cursor for ';
SQLSTRING:=SQLSTRING+'select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname) ';
SQLSTRING:=SQLSTRING+'open #tb ';
SQLSTRING:=SQLSTRING+'fetch next from #tb into @spid ';
SQLSTRING:=SQLSTRING+'while @@fetch_status=0 ';
SQLSTRING:=SQLSTRING+'begin ';
SQLSTRING:=SQLSTRING+'exec(''kill ''+@spid) ';
SQLSTRING:=SQLSTRING+'fetch next from #tb into @spid ';
SQLSTRING:=SQLSTRING+'end ';
SQLSTRING:=SQLSTRING+'close #tb ';
SQLSTRING:=SQLSTRING+'deallocate #tb ';
adorestore.CommandText:=SQLSTRING;
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+2;
//setup4
try
SQLSTRING:='exec sp_addlogin ''mentorologin'',''mentoro'''; //创建用户与密码
adorestore.CommandText:=SQLSTRING;
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
//setup5
SQLSTRING:='exec sp_addsrvrolemember N''mentorologin'', sysadmin'; //创建用户权限设置
adorestore.CommandText:=SQLSTRING;
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
finally//wrapup
MessageBox(Handle, '系统中已创建了用户及登录!系统将继续创建数据库!', '操作提醒', MB_ICONASTERISK);
end;//try/finally
//利用创建的存储过程还原备份的数据库
adorestore.CommandText:='use Master';
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
adorestore.CommandText:='execute p_killspid '+dataBaseName;//系统存储过程
adorestore.Execute ;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+1;
SQLSTRING:=ExtractFilePath(ParamStr(0))+dataBaseName+'.dat';
adorestore.CommandText:='RESTORE database '+dataBaseName+' FROM DISK ='''+SQLSTRING+''' with replace ';
try
adorestore.Execute;
RzProgressBar1.PartsComplete:=RzProgressBar1.PartsComplete+2;
adorestore.Free;
MessageBox(Handle, '数据库成功创建', '提示信息', MB_ICONASTERISK);
except
MessageBox(Handle, '创建失败!', '提示信息', MB_ICONHAND);
end;
RzProgressBar1.PartsComplete:=0;
Application.Terminate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//从INI文件中读取设备服务器及数据库
myinifile := Tinifile.Create(ExtractFilePath(Paramstr(0)) + 'mentorouser.ini');
server := myinifile.ReadString('messages', 'server', '(local)');
dataBaseName := myinifile.ReadString('messages', 'dataname', '(local)');
RzEdit1.EditText:=server;
RzEdit2.EditText:=dataBaseName;
ADOConnection1.Connected := false;
adorestore := TAdocommand.Create(application);
adorestore.ConnectionString := ' Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;' +'Data Source=' + server;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -