c# - 如何获取特定机器的 SqlInstances 列表

标签 c# sql-server .net-2.0 wmi smo

谁能告诉我如何使用 c# 和 SMO 或任何 api 获取远程 Sqlserver 实例?

我有一个名为“RemoteMC”的远程服务器,它有 2 个 sql server 实例:“RemoteMc”和“RemoteMC\sqlexpress”

我试着用这样的代码获取实例:

Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);

但它返回“Host\sqlexpress”

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

RemoteMC
RemoteMC\sqlexpress;

?

最佳答案

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

它返回一个 DataTable其行具有类似 Version 的字段, name , IsLocal

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

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

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

编辑:将行添加到 foreach 以便它可以编译。

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);

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

关于c# - 如何获取特定机器的 SqlInstances 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097010/

相关文章:

sql - 批量插入到特定列?

php - 批量插入数据库

.net:System.Web.Mail 与 System.Net.Mail

.net - 如何使用反射调用 .NET 中的重载方法

c# - 字节数组的内容

c# - ASP.NET Core 中的多种身份验证方案

c# - 如何检索运行 Windows 服务的用户名?

c# - HttpWebRequest 回调被 UI 阻塞

c# - Nhibernate 日期时间问题

具有许多输入的 C# 高效子串