2017-01-02 166 views
0

我在Windows應用程序中使用下面的代碼來獲取本地服務器,當我使用SQL Server 2012時它沒有任何錯誤地工作,但是當我下載SQL Server 2016時,出現異常:SQL Server 2016列表實例

異常:嘗試管理服務時發生SMO異常。 內部異常:無法檢索此請求的數據。

驗證碼:

public List<string> findLocalServers() 
{ 
    var servers = new List<string>(); 
    try 
    { 
     var serverCollection = new ManagedComputer().ServerInstances.Cast<ServerInstance>().Select(instance => String.IsNullOrEmpty(instance.Name) ? 
             instance.Parent.Name : instance.Parent.Name) 
            .ToArray(); 

     foreach (var server in serverCollection.Where(server => !servers.Contains(server))) 
     { 
      servers.Add(server); 
     } 

     return servers; 
    } 
    catch (Exception ex) 
    {    
     return null; 
    } 
} 
+0

我想你可能需要安裝SQL Server 2016的DLL。 –

+0

我已經添加了它們。 –

+0

你有'String.IsNullOrEmpty(instance.Name)? instance.Parent.Name:instance.Parent.Name'。你確定這是你想寫的嗎? –

回答

0

我有同樣的問題。這些步驟幫助了我。

Microsoft.SqlServer.ConnectionInfo的引用增加到版本13.x.x.x(通過添加引用 - >並在擴展中找到較高版本)。 Microsoft.SqlServer.Management.Sdk.SfcMicrosoft.SqlServer.Smo的步驟相同。

我沒有找到Microsoft.SqlServer.SqlWmiManagement的增加版本。所以我刪除了參考這個大會,並通過瀏覽我創建C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies\Microsoft.SqlServer.SqlWmiManagement.dll

這就是全部。