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

📄 c1.pas

📁 delphi 写的自动安装sql数据库的小程序
💻 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 + -