2013-10-19 159 views
0

說,如果我有什麼是隻此枚舉獲得服務器名:如何僅通過服務器名稱獲取SQL Server版本?

//Collect server names 
List<string> arrServerNames = new List<string>(); 

try 
{ 
    // Perform the enumeration 
    DataTable dataTable = null; 
    try 
    { 
     dataTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources(); 
    } 
    catch 
    { 
     dataTable = new DataTable(); 
     dataTable.Locale = System.Globalization.CultureInfo.InvariantCulture; 
    } 

    // Create the object array of server names (with instances appended) 
    for (int i = 0; i < dataTable.Rows.Count; i++) 
    { 
     string name = dataTable.Rows[i]["ServerName"].ToString(); 
     string instance = dataTable.Rows[i]["InstanceName"].ToString(); 
     if (instance.Length == 0) 
     { 
      arrServerNames.Add(name); 
     } 
     else 
     { 
      arrServerNames.Add(name + "\\" + instance); 
     } 
    } 

} 
catch 
{ 
    //Error 
} 

我怎樣才能知道安裝在服務器上的SQL Server版本?

+0

這個鏈接將幫助您 http://social.msdn.microsoft.com/Forums/en-美國/ e14115b0-50f1-4973-a54d-d969857c0712 /如何對獲得-SQL服務器版本信息,從-C代碼?論壇= adodotnetdataproviders http://stackoverflow.com/questions/11050454/how-對檢查-IF-SQL服務器版本 - 2008 - 或 - 更高的-C鋒利Windows的形式 –

+0

@dholakiyaankit:太糟糕了,我不能downvote意見... – c00000fd

+0

@ c000000fd抱歉,我努力過爲你做點什麼 –

回答

5

檢查official MSDN documentation for GetDataSources()會有容易發現,有一個Version列的結果集:

// Create the object array of server names (with instances appended) 
for (int i = 0; i < dataTable.Rows.Count; i++) 
{ 
    string name = dataTable.Rows[i]["ServerName"].ToString(); 
    string instance = dataTable.Rows[i]["InstanceName"].ToString(); 

    string version = dataTable.Rows[i]["Version"].ToString(); // this gets the version! 

    .......... 
} 
+0

謝謝。只是嘗試過,但不幸的是,我在該枚舉中的所有三個條目中都有'Version'作爲空字符串......只是好奇,我可以嘗試使用此連接字符串連接到SQL Server:'(「Server =」+服務器+「;集成安全= SSPI;數據庫高手」'然後從'SqlConnection' – c00000fd

+0

@ C00000FD得到的版本:當然,你可以試試 - 但你需要在連接沒有做好準備,以處理這種情況?工作(如果你的用戶不具有「綜合安全」權限) –

+0

你的意思是'Windows用戶Account'我的腳本下運行,右 – c00000fd

相關問題