Динамический запуск сервера MS SQL

Следующий пример показывает, как на C++ динамически запускать MS SQL Server в Windows NT. Всё, что для этого потребуется, это включить в проект w95scm.lib, которая поставляется с SQL 7.0 CD.

// находится на Sql7.0 CD
#include "wn95scm.h"

BOOL StartSqlServer(LPSTR szErrorMsg) {
LPSTR szService = "MSSQLServer";
DWORD dwServiceState, dwErr;
BOOL bControlSuccessful;

// состояние сервиса.
bControlSuccessful = TRUE;
dwServiceState = SQLSCMGetLocalServiceState(szService, &dwErr);
while ((dwServiceState != 0) && (bControlSuccessful == TRUE)) {
if (dwServiceState == SERVICE_RUNNING)
break;
switch (dwServiceState) {
// если в режиме паузы, то даём команду продолжить работу.
case SERVICE_PAUSED:
bControlSuccessful=SQLSCMLocalServiceControl(szService,
SQLSCMCmd_CONTINUE,
&dwErr, 0, NULL);
break;
// Если остановлен, то запускаем сервис
case SERVICE_STOPPED:
bControlSuccessful=SQLSCMLocalServiceControl(szService,
SQLSCMCmd_START,
&dwErr, 0, NULL);
break;
// Если состояние 0, то возникла ошибка при определении
// состояния сервиса.
default:
// Error. Return failure.
if (dwServiceState == 0) {
sprintf(szErrorMsg, "Error %lu on attempt to
determineservice state.", dwErr);
return (FALSE);
}
}
Sleep(5);
dwServiceState = SQLSCMGetLocalServiceState(szService, &dwErr);
}
if (bControlSuccessful) {
sprintf(szErrorMsg, "Error %lu returned on attempt to
change service state.", dwErr);
}
return (bControlSuccessful ? TRUE : FALSE);
}