如何获取特定计算机的SqlInstances列表

Cut*_*ute 1 c# sql-server wmi smo .net-2.0

任何人都可以告诉我如何使用c#和SMO或任何API获取远程Sqlserver实例?

我有一个远程服务器名称"RemoteMC",它有2个sql server实例:"RemoteMc"和"RemoteMC\sqlexpress"

我尝试在这样的代码中获取实例:

Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
Run Code Online (Sandbox Code Playgroud)

但它返回"Host\sqlexpress"

我不知道出了什么问题.我怎样才能得到结果:

RemoteMC
RemoteMC\sqlexpress;

Gar*_*ill 6

这个SmoApplication.EnumAvailableSqlServers方法就是你要找的.有3个重载,其中一个带有string服务器名称的参数.

它返回一个DataTable,它的行有像场Version,name,IsLocal,等.

您需要添加对SMO库的引用,并且您可能希望using Microsoft.SqlServer.Management.Smo;在C#文件的顶部添加" ".

有关SQL SMO的介绍,请参见http://www.sqldbatips.com/showarticle.asp?ID=34.

编辑:一些代码来解决这个特殊的问题(我还没有编译或运行):

编辑:.Rows添加到foreach,以便它可以编译.

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);

foreach (DataRow dataRow in dataTable.Rows)
{
    if ((dataRow["Server"] as string) == "MyServerName")
        Console.WriteLine(dataRow["Instance"] as string);
}
Run Code Online (Sandbox Code Playgroud)