C# 如何使用C启动所有停止的SQL Server服务#

C# 如何使用C启动所有停止的SQL Server服务#,c#,sql-server,C#,Sql Server,如何使用C#启动所有停止的SQL Server服务 我正在使用此代码,但它工作不正常,并显示以下错误消息: 无法在计算机“”上打开MSSQL$SQLEXPRESS服务 代码: 我想在Windows服务中使用SQL Server服务来检查SQL Server是否正在运行。如果它没有运行,那么我想先启动服务器,然后再进行下一步工作。但我的计算机中存在服务就绪。我想也存在内部异常,不是吗?最有可能出现的情况是:“访问被拒绝”。那么,您是否以足够的权限运行此代码(以管理员身份启动VisualStudio

如何使用C#启动所有停止的SQL Server服务

我正在使用此代码,但它工作不正常,并显示以下错误消息:

无法在计算机“”上打开MSSQL$SQLEXPRESS服务

代码:


我想在Windows服务中使用SQL Server服务来检查SQL Server是否正在运行。如果它没有运行,那么我想先启动服务器,然后再进行下一步工作。

但我的计算机中存在服务就绪。我想也存在内部异常,不是吗?最有可能出现的情况是:“访问被拒绝”。那么,您是否以足够的权限运行此代码(以管理员身份启动VisualStudio)?我无法复制此代码-如果服务存在,并且您有权启动和停止服务(以管理员身份运行),则此代码应该可以正常工作。再调试一些,检查是否有异常,如果有,检查异常返回的所有信息(包括任何
.InnerException
),看看到底发生了什么……但是我的计算机中存在服务就绪我想也存在一个InnerException,不是吗?最有可能出现的情况是:“访问被拒绝”。那么,您是否以足够的权限运行此代码(以管理员身份启动VisualStudio)?我无法复制此代码-如果服务存在,并且您有权启动和停止服务(以管理员身份运行),则此代码应该可以正常工作。进一步调试,检查是否有异常,如果有,检查异常返回的所有信息(包括任何
.InnerException
)以了解实际情况。。。。。
public string RestartService(string serviceName, int timeoutMilliseconds)
{
    string status= string.Empty;

    ServiceController service = new ServiceController(serviceName);

    try
    {
         int millisec1 = Environment.TickCount;
         TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
         //service.Stop();
         //service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

         // count the rest of the timeout
         int millisec2 = Environment.TickCount;
         timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));

         service.Start();
         service.WaitForStatus(ServiceControllerStatus.Running, timeout);

         status = service.Status.ToString();
    }
    catch (Exception ex)
    {
        status = ex.Message;
    }

    return status;
}