C# .NET检查全文筛选器后台程序启动器是否正在运行
有没有办法从C#代码知道全文服务是否在MSSQL服务器下运行? 我尝试了Server.FullTextService.State,但没有成功。谢谢 Ok从ServiceController获取服务状态在本地计算机上运行正常,但如果您想了解服务是否在远程计算机上运行,则会失败 一种解决方案是查询sys.dm_服务器_服务:C# .NET检查全文筛选器后台程序启动器是否正在运行,c#,.net,sql-server,C#,.net,Sql Server,有没有办法从C#代码知道全文服务是否在MSSQL服务器下运行? 我尝试了Server.FullTextService.State,但没有成功。谢谢 Ok从ServiceController获取服务状态在本地计算机上运行正常,但如果您想了解服务是否在远程计算机上运行,则会失败 一种解决方案是查询sys.dm_服务器_服务: select status_desc from sys.dm_server_services WHERE filename LIKE '%fdlauncher.exe%'
select status_desc from sys.dm_server_services WHERE filename LIKE '%fdlauncher.exe%'
select status_desc from sys.dm_server_services WHERE service_account = 'NT service\MSSQLFDLauncher'
请注意,此方法可能不适用于某些SQL 2012实例上的全文服务:
如果此服务在本地系统上运行,您只需使用以下代码进行检查:
using System.ServiceProcess;
...
ServiceController sc = new ServiceController("MSSQLFDLauncher$MSSQLSERVER2012");
switch (sc.Status)
{
case ServiceControllerStatus.Running:
Console.WriteLine("Running");
break;
default:
Console.WriteLine("Else");
break;
}
您可以在windows服务中检查服务名称
编辑:
要自动检查服务名称,请使用以下代码:
DataTable dt = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();
ServiceController sc
foreach(DataRow d in dt.Rows)
{
string instance = dr["InstanceName"].ToString();
sc = new ServiceController("MSSQLFDLauncher$"+instance );
switch (sc.Status)
{
case ServiceControllerStatus.Running:
Console.WriteLine("MSSQLFDLauncher for" + instance + "is Running");
break;
default:
Console.WriteLine("MSSQLFDLauncher for" + instance + "is NOT Running");
break;
}
}
我在这里找到了很好的解决方案: 如果不确定服务名称(适用于MSSQL Server 2008R2和2012),可以使用如下查询: 在某些MSSQL 2012(Denali)服务器上有一个轻微的缺点(bug)。sys.dm_server_服务仅返回SQL server代理的状态 详情如下:
希望这能帮助别人 谢谢,我工作过。服务的名字是“MSSQLFDLauncher”RafałS,你的方法很有魅力。但是有没有一种方法可以明确地知道Msql服务的名称呢?在不同的机器上,名称可能不同。根据本博客,SQL Server服务始终具有相同的名称,如果本地机器具有多个SQL Server实例,则服务名称遵循以下模式:[service_name]$[named_instance]即MSSQLSFDLauncher$MSSQL2012Yeah,再次感谢这种命名模式Rafal,这真的很有帮助。我还发现,如果我们想在远程服务器上运行服务,最好使用sys.dm_server_服务查询它。因为据我所知,ServiceController只能检索当前机器上运行的服务,我很高兴能为您提供帮助。请将此帖子标记为已回答,并将有关sys.dm_server_服务的信息添加到您的第一篇帖子中,这样,如果其他人有相同的问题,他可能需要花费更少的时间。干杯
select status_desc from sys.dm_server_services WHERE filename LIKE '%fdlauncher.exe%'
select status_desc from sys.dm_server_services WHERE service_account = 'NT Service\MSSQLFDLauncher'