有没有办法知道全文服务是否在C#代码的MSSQL服务器下运行? 我试过没有运气的Server.FullTextService.State。感谢
好的从ServiceController获取服务状态在本地计算机上运行正常,但是如果你想知道服务是否在远程运行,它就会失败。
一个问题是查询sys.dm_server_services:
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实例上的全文服务:
http://sqlandme.com/tag/sys-dm_server_services/ http://www.mssqltips.com/sqlservertip/2611/sql-services-status-check--an-evolution-part-3/
答案 0 :(得分:0)
如果此服务在本地系统上运行,您只需使用以下代码进行检查:
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;
}
}
答案 1 :(得分:0)
我在这里找到了很好的解决方案: http://www.mssqltips.com/sqlservertip/2611/sql-services-status-check---an-evolution-part-3/ 如果不确定服务名称,可以使用这样的查询(适用于MSSQL Server 2008R2和2012):
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'
某些MSSQL 2012(Denali)服务器存在轻微缺点(错误)sys.dm_server_services仅返回SQL Server代理的状态 更多细节在这里: http://sqlandme.com/tag/sys-dm_server_services/ 希望这会对某人有所帮助!