NÃO É POSSÍVEL ABRIR O SERVI?O MSSQL$SQLEXPRESS

ELOILIMAS 28/09/2016 19:42:36
#467663
Boa noite!
estou desenvolvendo um aplicativo, que no load do form ele confere se o serviço de sqlserver está rodando e se não estiver inicia o serviço.
Eu achei este exemplo na net :
Public Shared Function verificaSeSQLServerNaoEstaRodando() As Boolean
Dim servicoControle As New ServiceController([Ô]MSSQL$SQLEXPRESS[Ô])

If servicoControle.Status <> ServiceControllerStatus.Running OrElse servicoControle.Status = ServiceControllerStatus.Stopped OrElse servicoControle.Status = ServiceControllerStatus.Paused Then
servicoControle.Start()
Return True
End If
Return False
End Function

Só que está dando o seguinte erro:

Ocorreu uma exceção sem tratamento do tipo [Ô]System.InvalidOperationException[Ô] em System.ServiceProcess.dll

Informações adicionais: Não é possível abrir o serviço MSSQL$SQLEXPRESS no computador [ô].[ô].

alguém pode me ajudar a resolver este problema?
KERPLUNK 28/09/2016 20:14:39
#467664
Resposta escolhida
O nome do serviço/instância pode não ser esse. Lembre-se que ao instalar, o nome do serviço e instância podem ser modificados e mesmo depois de instalados isso também pode acontecer. Eu sugeriria utilizar procurar por instâncias para descobrir todos os SQL Servers ao alcance da máquina, mas se preferir ainda usar da maneira com está usando, eu sugiro primeiro listar todos os serviços, depois utilizar uma expressão lambda para verificar se existe um serviço contendo [Ô]MSSQL[Ô] no nome e iria daí em diante:

Dim services As List(Of ServiceController) = InlineAssignHelper(services, ServiceController.GetServices().ToList())
Dim servico As ServiceController = services.FirstOrDefault(Function(x) x.ServiceName.Contains([Ô]MSSQL[Ô]))

If servico IsNot Nothing Then
If servico.Status <> ServiceControllerStatus.Running Then
If servico.Status = ServiceControllerStatus.Paused Or servico.Status = ServiceControllerStatus.Stopped Then
servico.Start()
End If
End If
End If
DS2T 29/09/2016 08:21:37
#467674
Lembrando que você deve executar a aplicação como administrador também, senão, não rola...
ELOILIMAS 29/09/2016 11:57:22
#467697
KERPLUNK,
desculpe minha ignorância, mas eu testei seu código e está dando o seguinte erro:
[Ô]InlineAssignHelper[Ô] não está declarado. Ele pode está inacessível devido ao seu nível de proteção.

E também rodei o meu código mesmo como administrador como citou o nosso amigo DS2T, mas continuou o mesmo erro.
com relação a instancia com o nome ([Ô]MSSQL$SQLEXPRESS[Ô]), está correta. eu entrei no gerenciamento do computador e fui em serviços e SQSExpress e confirmei.
KERPLUNK 29/09/2016 16:07:14
#467706
é que fiz o código em C# e converti. Como o VB.NET é pobre quanto à cast direto, ele usa um método auxiliar para isso:

Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
ELOILIMAS 29/09/2016 16:39:52
#467715
Beleza, ajudou muito. valeu!!
Tópico encerrado , respostas não são mais permitidas