Динамический запуск сервера 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); }