2017-01-02 121 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

这就是全部。