如何使用SQL查询获取已安装的Windows服务列表

问题描述:

您可以请我帮助我如何使用SQL查询获取已安装的Windows服务列表?如何使用SQL查询获取已安装的Windows服务列表

+0

简答:你不行。扩展答案:好吧,从技术上讲,您可以编写SQLCLR过程并通过此过程的调用获取已安装的服务。但这完全是关于.NET的,与查询本身无关。 –

+0

@AndyKorneyev感谢您的评论。我们可以使用SQL作业来启动或停止服务。我得到了这个查询是否可以得到整个windows服务列表。 – METALHEAD

您可以使用xp_cmdshell(必须是在服务器上enabled)来调用sc

CREATE TABLE #Cmd(
    Line_ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, 
    Line VARCHAR(MAX) 
) 

INSERT INTO #Cmd(Line) 
EXEC master.dbo.xp_cmdshell 'sc queryex type= service state= all' 

SELECT SUBSTRING(Line, 15, 100) 
FROM #Cmd 
WHERE Line LIKE 'SERVICE_NAME%' 

如果您需要获得有关服务的更多信息,你可以使用Line_ID线自连接和显示相关行:

SELECT SUBSTRING(l1.Line, 15, 100) AS Service_Name 
     ,SUBSTRING(l2.Line, 15, 100) AS Display_Name 
     ,SUBSTRING(l3.Line, 33, 100) AS Service_State 
FROM #Cmd l1 
    INNER JOIN #Cmd l2 
     ON l1.Line_ID = l2.Line_ID - 1 
    INNER JOIN #Cmd l3 
     ON l1.Line_ID = l3.Line_ID - 3 
WHERE l1.Line LIKE 'SERVICE_NAME%' 
+0

太棒了...谢谢你soo .. – METALHEAD

+0

@METALHEAD,我添加了一个示例来显示每个服务的更多信息。 – Serge