2017-02-23 54 views
1

我需要獲取SQL Server實例名稱列表以及我的網絡上的版本和版本。我用以下代碼嘗試過使用ManagementObject從網絡中的所有SQL Server實例

string NamespacePath = "\\\\.\\ROOT\\Microsoft\\SqlServer\\ComputerManagement12"; 
string ClassName = "SqlServiceAdvancedProperty"; 

// Create ManagementClass 
ManagementClass oClass = new ManagementClass(NamespacePath + ":" + ClassName); 
string s = string.Empty; 
string instancename = string.Empty; 

// Get all instances of the class and enumerate them 
foreach (ManagementObject oObject in oClass.GetInstances()) 
{   
    instancename = instancename + Convert.ToString(oObject["ServiceName"]); 
} 

我可以使用上述代碼從網絡獲取SQL Server的所有實例,其版本和版本嗎?

任何人都可以幫助我獲得SQL Server實例和版本列表嗎?

+0

輸出SQLCMD -L(或osql -L)的結果列出本地網絡中的所有服務器。如果您已登錄到每臺服務器,在列表中找到/您的域名登錄名列出的每臺服務器都是有效的,則可以在每臺服務器上執行query select @@ version。如您的示例,MMC呼叫也需要權利 – vitalygolub

+0

我們沒有sqlserver的憑據。我們只需要獲取sqlserver實例名稱,版本和版本的列表。任何人都知道我們如何使用WMI和c#代碼來獲取信息? –

回答

1

看到這篇文章:http://msdn.microsoft.com/en-us/library/dd981032.aspx

只提的是本文中的代碼示例使用SQL Server 2008中的WMI提供程序來檢測所有SQL Server 2008和SQL Server 2005個實例。對於檢測到的每個實例,代碼將列出結果中每個實例的版本和版本。 您必須檢查SQL Server 2012的ComputerManagement11,SQL 2014的ComputerManagement12和SQL 2016的ComputerManagement13。