DELPHI 7 (WIN32) 与VC#启动SQL SERVER 2000服务

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

DELPHI WIN32使用Service API和SQL SERVER自备服务工具scm来启动SQL SERVER

unit Unit2;

interface

procedure RunMSSQLSERVICE ;

implementation

uses

Windows,WinSvc;

procedure RunMSSQLSERVICE ;

var

SrvHandle: SC_HANDLE;

Service_Status: _SERVICE_STATUS;

SrvStatus : Integer;

begin

TRY

SrvHandle := OpenSCManager('', SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);

SrvHandle := OpenService(SrvHandle, PChar('MSSQLServer'), SERVICE_QUERY_STATUS or SERVICE_START);

if QueryServiceStatus(SrvHandle, Service_Status) then

begin

SrvStatus := Service_Status.dwCurrentState;

if SrvStatus = SERVICE_STOPPED then

begin

Winexec('scm -action 1 -slient 1 -service mssqlserver ',sw_Normal);

end;

end;

EXCEPT

END;

end;

end.

-------------------------------------------------------------------------------------------

VC# 2005 EXPRESS在.NET框架下只需封装了serviceAPI的serviceController组件帮忙

#region Using directives

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Windows.Forms;

#endregion

namespace WindowsApplication1

{

partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

try

{

this.serviceController1.ServiceName = "MSSQLServer";

if (this.serviceController1.Status != System.ServiceProcess.ServiceControllerStatus.Stopped)

{

this.serviceController1.Start();

}

}

catch

{

}

}

}

}

基本上原理归为使用系统提供的 SERVICE API或WMI接口 启动,以及使用SQL SERVER自带工具scm来启动.

最简单的办法是SCM命令行方法scm -action 1 -slient 1 -service mssqlserver ',sw_Normal

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航