0

我在我的 Windows 应用程序中使用下面的代码来获取本地服务器,当我使用 SQL Server 2012 时它可以正常工作,但是当我下载 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;
    }
}
4

1 回答 1

0

我有同样的问题。这些步骤帮助了我。

参考Microsoft.SqlServer.ConnectionInfo增加至 13.xxx 版本(通过添加参考 -> 并在扩展中找到更高版本)。Microsoft.SqlServer.Management.Sdk.Sfc和的步骤相同Microsoft.SqlServer.Smo

我没有找到Microsoft.SqlServer.SqlWmiManagement. 所以我删除了对这个程序集的引用,并通过浏览我创建了C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies\Microsoft.SqlServer.SqlWmiManagement.dll.

就这样。

于 2017-02-05T17:25:21.947 回答