ServiceState

The ServiceState property of an object of ClassType clsServer contains the execution state of the OLAP server service (MSSQLServerOLAPService). Read the property to query the status of the service. Set the property to a value to change the execution state of the service. Decision Support Objects (DSO) partially implements the service control functions of the Microsoft® Win32® API.

Data Type

Long

Values

The following values are returned when reading ServiceState.

Value Description
SERVICE_CONTINUE_PENDING The service continue is pending.
SERVICE_PAUSE_PENDING The service pause is pending.
SERVICE_PAUSED The service is paused.
SERVICE_RUNNING The service is running.
SERVICE_START_PENDING The service is starting.
SERVICE_STOP_PENDING The service is stopping.
SERVICE_STOPPED The service is not running.

The following values control the service when writing ServiceState.

Value Requested Action
SERVICE_PAUSED Pause the service.
SERVICE_RUNNING Start the service if stopped or paused.
SERVICE_STOP Stop the service. 

Access

Read/write

Remarks

If a requested action cannot be completed, such as attempting to pause a service that is not running, an error appears.

Example

This example code can be incorporated into your program to control the execution state of MSSQLServerOLAPService using DSO.

' OLAP server service control constants

Const OLAP_SERVICE_RUNNING = &H4

Const OLAP_SERVICE_PAUSED = &H7

Const OLAP_SERVICE_STOP = &H1

 

' OLAP server status and error return constants

Const SERVICE_CONTINUE_PENDING = &H5

Const SERVICE_PAUSE_PENDING = &H6

Const SERVICE_PAUSED = &H7

Const SERVICE_RUNNING = &H4

Const SERVICE_START_PENDING = &H2

Const SERVICE_STOP_PENDING = &H3

Const SERVICE_STOPPED = &H1

 

' Additional error return constants

Const SERVICE_ACCEPT_PAUSE_CONTINUE = &H2

Const SERVICE_ACCEPT_SHUTDOWN = &H4

Const SERVICE_ACCEPT_STOP = &H1

Const SERVICE_ACTIVE = &H1

Const SERVICE_CHANGE_CONFIG = &H2

Const SERVICE_CONTROL_CONTINUE = &H3

Const SERVICE_CONTROL_INTERROGATE = &H4

Const SERVICE_CONTROL_PAUSE = &H2

Const SERVICE_CONTROL_SHUTDOWN = &H5

Const SERVICE_CONTROL_STOP = &H1

Const SERVICE_ENUMERATE_DEPENDENTS = &H8

Const SERVICE_INACTIVE = &H2

Const SERVICE_INTERROGATE = &H80

Const SERVICE_NO_CHANGE = &HFFFF

Const SERVICE_PAUSE_CONTINUE = &H40

Const SERVICE_QUERY_CONFIG = &H1

Const SERVICE_QUERY_STATUS = &H4

Const SERVICE_STATE_ALL = (SERVICE_ACTIVE Or SERVICE_INACTIVE)

Const SERVICE_USER_DEFINED_CONTROL = &H100

 

Const SERVICE_WAIT_MAX_SECONDS As Integer = 30

' ==============================================================

' OlapServiceControl function

' Returns True or False

' Calling parameters:

'     - objServer is an object of ClassType clsServer

'     that has been created and initialized

'     - iCmdReq is one of the OLAP server service

'     control constants

'     - lngStatus receives the status (one of the OLAP

'     server status constants)

'     - lngErr receives status if function fails (one of the OLAP

'     server status constants or one of the additional error constants)

 

Friend Function OlapServiceControl(objServer As Object, _

                                  ByVal iCmdReq As Integer, _

                                  ByRef lngStatus As Long, _

                                  ByRef lngErr As Long) As Boolean

Dim bRet             As Boolean

Dim lngSrvStat       As Long

Dim iCount           As Integer

Dim lngControlCmd    As Long

 

lngSrvStat = myServer.ServiceState

bRet = False

lngControlCmd = iCmdReq

lngErr = 0

 

Select Case iCmdReq

   Case SERVICE_RUNNING    ' Caller wants to start the server

      Select Case lngSrvStat

         Case SERVICE_RUNNING

            bRet = True

         Case SERVICE_PAUSED, SERVICE_STOPPED

            objServer.ServiceState = lngControlCmd

            For iCount = 1 To SERVICE_WAIT_MAX_SECONDS

               lngSrvStat = objServer.ServiceState

               If lngSrvStat = SERVICE_RUNNING Then

                  bRet = True

                  Exit For

               End If

               Call WaitNSeconds(1)

            Next iCount

      End Select

 

   Case SERVICE_PAUSED    ' Caller wants to pause the server

      Select Case lngSrvStat

         Case SERVICE_PAUSED

            bRet = True

         Case SERVICE_RUNNING

            objServer.ServiceState = lngControlCmd

            For iCount = 1 To SERVICE_WAIT_MAX_SECONDS

               lngSrvStat = objServer.ServiceState

               If lngSrvStat = SERVICE_PAUSED Then

                  bRet = True

                  Exit For

               End If

               Call WaitNSeconds(1)

            Next iCount

         Case SERVICE_STOPPED

            bRet = False

      End Select

 

   Case SERVICE_STOP     ' Caller wants to stop the server

      Select Case lngSrvStat

         Case SERVICE_STOPPED

            bRet = True

         Case SERVICE_PAUSED

            bRet = False

         Case SERVICE_RUNNING

            objServer.ServiceState = lngControlCmd

            For iCount = 1 To SERVICE_WAIT_MAX_SECONDS

               lngSrvStat = objServer.ServiceState

               If lngSrvStat = SERVICE_STOPPED Then

                  bRet = True

                  Exit For

               End If

               Call WaitNSeconds(1)

            Next iCount

      End Select

End Select

 

lngStatus = lngSrvStat

If Not bRet Then

   lngErr = lngSS

End If

OlapServiceControl = bRet

 

End Function

' ==============================================================

Private Sub WaitNSeconds(iSeconds As Integer)

Dim dteFinish      As Date

dteFinish = DateAdd("s", iSeconds, Now)

Do While Now < dteFinish

   DoEvents    ' Yield to other processes.

Loop

End Sub

(c) 1988-1998 Microsoft Corporation. All Rights Reserved.