2012-07-11 57 views
0

在SQL Server 2008 R2 SP1中,我們有一個新的dmv - sys.dm_server_services,這對於輕鬆獲取SQL Server服務相關信息非常有用。如何使用tsql獲取sql server服務信息

是否有任何類似的sys視圖/目錄或tsql黑客,我可以輕鬆查詢早期版本的SQL Server,如SQL Server 2005或SQL Server 2008?

非常感謝!

回答

2

您可以使用CLR或PowerShell來做到這一點,但可能不是直接的T-SQL。你正在談論的DMV從SQL Server進程中以這種方式提取這些信息,你不能從(TABLE DM_SERVER_SERVICES),而不是從你有編程訪問的某個系統表中獲取...

從PowerShell中,你可以使用像Get-ProcessGet-Service(對當前實例名稱進行過濾,如果是默認實例,則爲MSSQLSERVER)。用C#你可以look at this answer,但我不知道任何現成的SQLCLR代碼。

+0

並且我毫不猶豫地提出這個建議,但是甚至可以使用'xp_cmdshell'來調用'tasklist'或'wmic process get'(儘管後者的默認輸出是可怕的)。 – 2012-07-11 19:46:25

+0

例如:'EXEC master..xp_cmdshell'wmic service其中「Name like''%sql%''」get';' – 2012-07-11 20:27:15

+0

感謝您的回覆。 xp_cmdshell在服務器上被阻止。 PS似乎是要走的路。奇怪的是,當我連接到遠程sql服務器。 get-service返回本地工作站上的所有東西 – 2012-07-12 17:38:44

相關問題