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 
|