我在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;
}
}
答案 0 :(得分:0)
我有同样的问题。这些步骤对我有所帮助。
对Microsoft.SqlServer.ConnectionInfo
的引用增加到版本13.x.x.x(通过添加引用 - &gt;并在Extensions中查找更高版本)。
Microsoft.SqlServer.Management.Sdk.Sfc
和Microsoft.SqlServer.Smo
的步骤相同。
我没有找到Microsoft.SqlServer.SqlWmiManagement
的增加版本。所以我删除了对这个程序集的引用,并通过浏览我创建了C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies\Microsoft.SqlServer.SqlWmiManagement.dll
。
就是这样。