Следующий пример показывает, как на 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); }
|