2017-02-15 46 views
0

您可以請我幫助我如何使用SQL查詢獲取已安裝的Windows服務列表?如何使用SQL查詢獲取已安裝的Windows服務列表

+0

簡答:你不行。擴展答案:好吧,從技術上講,您可以編寫SQLCLR過程並通過此過程的調用獲取已安裝的服務。但這完全是關於.NET的,與查詢本身無關。 –

+0

@AndyKorneyev感謝您的評論。我們可以使用SQL作業來啓動或停止服務。我得到了這個查詢是否可以得到整個windows服務列表。 – METALHEAD

回答

0

您可以使用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

相關問題