Динамический запуск сервера MS SQL
Следующий пример показывает, как на C++
динамически запускать MS SQL Server в Windows NT. Всё, что
для этого потребуется, это включить в проект
w95scm.lib, которая поставляется с SQL 7.0 CD.
#include "wn95scm.h" //находится на Sql7.0 CD
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;
default:// Если состояние 0, то возникла ошибка при определении
// состояния сервиса.
if (dwServiceState == 0)
{ // Error. Return failure.
sprintf(szErrorMsg, "Error %lu on attempt to determine
service 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);
}
|