2011-11-07 6 views
1

VB.NetプログラムからSQL Serverを列挙する必要があります。これは、SQLブラウザーサービスがオンでない場合に失敗します。デフォルトのインストールでは無効になっているようです。smoでSQL Serverブラウザサービスを開始できますか?

サービスステータスをテストし、必要に応じてそれを有効にして起動するにはどうすればよいですか?

答えて

2

必ずしもSMOが必要なわけではありません。 ServiceControllerクラスを使用できます。シンプルな使用のための

' don't forget to reference the System.ServiceProcess and Imports System.Management DLLs 

imports System 
imports System.ServiceProcess 
imports System.Management 

public module MyModule 
Sub Main() 
    Dim serviceName as String = "SQLBrowser" 
    Dim sc As ServiceController = New ServiceController(serviceName) 


    ' make sure start mode is automatic 
    Dim path As String = "Win32_Service.Name='" & serviceName & "'" 
    Dim p As New ManagementPath(path) 
    Dim ManagementObj As New ManagementObject(p) 
    Dim parameters As Object() = New Object(0) {} 
    Dim value As String = "Automatic" 
    parameters(0) = value 
    ManagementObj.InvokeMethod("ChangeStartMode", parameters) 

    if sc.Status = ServiceControllerStatus.Stopped or sc.Status = ServiceControllerStatus.Paused then 
     Console.WriteLine(serviceName + " is starting.") 
     sc.Start() 
    else 
     Console.WriteLine(serviceName + " is running.") 
    end if 
End Sub 

エンドモジュール

+0

更新されたコードスニペットこれは素晴らしい見えます –

+0

...:ここで実行されていないサービスを開始する簡単な例です。障害のあるサービスではどうなりますか?そして、どうすればそれを可能にすることができますか? – GilShalit

+0

不安定なサービスを処理するには、別のAPIがあります。 http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/086b4d8b-18d1-41d4-82d6-66509c726614 –

関連する問題