【问题标题】:Cannot start service SQLBrowser on computer '.'无法在计算机“。”上启动服务 SQLBrowser
【发布时间】:2014-05-19 14:18:48
【问题描述】:

我在 Windows 7 64 位上的 c# 2010 中有一个应用程序。 我正在尝试通过此代码启动 SQLBROWSER:

public void Start()
{
    if (_service.Status != ServiceControllerStatus.Running ||
        _service.Status != ServiceControllerStatus.StartPending)
        _service.Start();

     _service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 1, 0));
}

我创建了一个 app.manifest 文件以管理员身份运行我的应用程序。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

当我以管理员身份执行我的应用程序时出现错误:

无法在计算机“。”上启动服务 SQLBrowser。

【问题讨论】:

  • 您可以从服务控制台手动启动服务吗?
  • 另外,您的 IF 条件可能应该是 &amp;&amp; 而不是 ||(这不是您的服务未启动的原因)
  • 是的,我可以,当它通过代码禁用时我可以启用它,但是要启动它,不行!
  • 你说的我都试过了,但没有结果!

标签: c# sql-server service


【解决方案1】:

好吧,我找到了我的问题的解决方案,非常感谢@user3394380 的帮助,这里是启用和启动服务的正确代码:

// Enable the service :
// Create a .cmd file and write the code below, then launch it via a process
"SC \\" + System.Environment.MachineName + @" Config SQLBROWSER start= auto"

// Start the service :
// Call Start()
_service.Start();

注意:不要像我一样在同一个操作中启用和启动服务,我在操作 A 中启用它,然后在操作 B 中启动它。

【讨论】:

    【解决方案2】:

    我在 VS 2010 中以管理员身份开始调试。它适用于已编译的应用程序。

    有app.manifest:

    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
          <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
    
        </application>
      </compatibility>
    
    </asmv1:assembly>
    

    和代码:

    class Program
    {
        static ServiceController _service = new ServiceController("SQLBROWSER");
    
        static void Main(string[] args)
        {
            //Enable service before starting it.
            Process.Start("sc.exe", " config SQLBROWSER start=auto");
            Start();
        }
    
        static void Start()
        {
            if (!(_service.Status == ServiceControllerStatus.Running || _service.Status == ServiceControllerStatus.StartPending))
                _service.Start();
    
            _service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 1, 0));
        }
    }
    

    在此处查看 MSDN 文章 http://technet.microsoft.com/en-us/library/cc739213(v=ws.10).aspx

    【讨论】:

    • 你没有看到我上面的cmets,我说:我可以在服务被禁用的时候启用它,但不能启动它。去禁用服务并通过代码启用它然后启动它,你会遇到同样的错误
    • 对不起,我错过了禁用服务部分。
    • 更新:Process.Start("sc.exe", " config SQLBROWSER start=auto"); 来自 [technet.microsoft.com/en-us/library/cc739213(v=ws.10).aspx]
    猜你喜欢
    • 2016-10-05
    • 2020-03-19
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多