如何使用SQL查询获取已安装的Windows服务列表
答
您可以使用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%'
简答:你不行。扩展答案:好吧,从技术上讲,您可以编写SQLCLR过程并通过此过程的调用获取已安装的服务。但这完全是关于.NET的,与查询本身无关。 –
@AndyKorneyev感谢您的评论。我们可以使用SQL作业来启动或停止服务。我得到了这个查询是否可以得到整个windows服务列表。 – METALHEAD