Create a new standard exe project and add reference of sqldmo.rll. This file can be found in \Binn\Resources\1033\sqldmo.rll under SqlServer70 directory.
Now add following code and declaration in your form's code:
Private WithEvents oSqlServer As SQLDMO.SQLServer
Private Function StartSqlServer(ByVal strServerName As String, strErrorMsg As String) As Boolean
Static boolFunctionExecuting As Boolean
If Not boolFunctionExecuting Then
BoolFunctionExecuting = True
Set oSqlServer = New SQLServer
With oSqlServer
.Name = strServerName
Do While .Status <> SQLDMOSvc_Running
Select Case .Status
Case SQLDMOSvc_Paused
.Continue
Case SQLDMOSvc_Stopped
.Start False, strServerName, "sa"
Case SQLDMOSvc_Starting
DoEvents
Case SQLDMOSvc_Unknown
strErrorMsg = "SqlServer in unknown state"
Exit Do
End Select
Loop
If .Status = SQLDMOSvc_Running Then
StartSqlServer = True
Else
StartSqlServer = False
End If
End With
Set oSqlServer = Nothing
BoolFunctionExecuting = False
End If
End Function
This function works quite well and if you would like to enhance it, use following constants for .Status property :
SQLDMOSvc_Continuing, SQLDMOSvc_Pausing, SQLDMOSvc_Starting, SQLDMOSvc_Stopped, SQLDMOSvc_Stopping.
You can also write code for the events fired by SQLServer object.