C# 如何获取网络上可用的SQL Server列表?

C# 如何获取网络上可用的SQL Server列表?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在尝试,但我不知道如何继续。你能帮我一下吗 SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; DataTable table = instance.GetDataSources(); foreach (var row in table.Rows) { foreach (var column in table.Columns) { ddlPublisherServe

我正在尝试,但我不知道如何继续。你能帮我一下吗

SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
DataTable table = instance.GetDataSources();

foreach (var row in table.Rows)
{
     foreach (var column in table.Columns)
     {
          ddlPublisherServer.Items.Add(???);
     }
}
在哪里SQL Server名称

如何从表中提取sql server名称


我正在使用C#在ASP.NET中工作。

如果想查看所有可用信息,您可以遍历可用列:

DataTable dt = SqlDataSourceEnumerator.Instance.GetDataSources();
foreach (DataRow dr in dt.Rows)
{
    foreach (DataColumn col in dt.Columns)
    {
        Console.WriteLine("{0,-15}: {1}", col.ColumnName, dr[col]);
    }
    Console.WriteLine();
}
这将显示如下内容:

ServerName     : COMPUTER1
InstanceName   : SQLEXPRESS
IsClustered    : No
Version        : 9.00.4035.00
所以,要回答你的问题:

ddlPublisherServer.Items.Add(row[table.Columns["ServerName"]]);
完整代码:

DataTable table = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();
foreach (DataRow server in table.Rows)
{
  ddlPublisherServer.Items.Add(server[table.Columns["ServerName"]].ToString());
}

Idk,在那里放一个断点,然后看看列名和值。我试过了,但它一直在说“不能用[]对'object'类型的表达式应用索引”,你知道为什么吗?@Testifier:忘了它想要的是
DataColumn
,而不是索引。只需传递您正在请求的列(在本例中为
table.Columns[“ServerName”]
)。@Testifier:这可能是编译时检测问题。不要使用
var
强制将它们声明为
DataTable
DataRow
并重试(我已经用我提到的内容更新了我的答案)。另外,我假设
ddlPublisherServer
IEnumerable
?确保在
服务器[]
result上调用
ToString()
。啊,您错过了结尾的“ToString”。现在试试这个。