C#列出局域网内所有的SQL SERVER服务器

目前本人知道两种方法:
1:利用SQLDMO
引用sqldmo
 private SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = null;
sqlServers = sqlApp.ListAvailableSQLServers();
 for (int i = 0; i < sqlServers.Count; i++)
 {
     object srv = sqlServers.Item(i + 1);
     if (srv != null)
     {
        this.cbDBServer.Items.Add(srv);
      }
}
 
 2:利用SqlDataSourceEnumerator
在控制台中实现将局域网中所有的SQL SERVER服务器列出来,以下仅将代码贴出:
   using System.Data.Sql;
class Program
    {
    static void Main(string[] args)
    {
      foreach (string str in GetSqlServerName())
      {
        Console.WriteLine(str);
      }
      Console.ReadLine();
    }
    public static string[] GetSqlServerName()
    {
      SqlDataSourceEnumerator sqlserver = SqlDataSourceEnumerator.Instance;
      DataTable db = sqlserver.GetDataSources();
      string[] Name = new string[db.Rows.Count];
      for (int i = 0; i < db.Rows.Count; i++)
        {
          Name[i]=string.Format("IsClustered: {0:10}",db.Rows[i]["isclustered"])
          + " " +
           string.Format("/nServerName: {0:15}", db.Rows[i]["Servername"])
          + " " +
           string.Format("/nInstanceName: {0:20}", db.Rows[i]["instancename"])
          + " " +
          string.Format("/nVersion: {0:20}/n",db.Rows[i]["version"]);
        }
    return Name;
}
GetDataSources 检索包含有关所有可见 SQL Server 2000 或 SQL Server 2005 实例的信息的
DataTable。 

此方法返回的表包含以下列,所有这些列都包含字符串:

说明

ServerName

服务器名。

InstanceName

服务器实例的名称。如果服务器作为默认实例运行,则为空。

IsClustered

指示服务器是否是群集的一部分。

版本

服务器版本(对于 SQL Server 2000,为 8.00.x;对于 SQL Server 2005,为 9.00.x)。

Note注意

由 SqlDataSourceEnumerator 定位网络上的数据源所使用的机制的性质决定,该方法并不总是能返回可用服务器的完整列表,该列表可能在每次调用时都不同。如果您打算使用此函数来让用户从列表中选择服务器,请确保您始终同时提供键入列表中所没有的名称的选项,以防服务器枚举未能返回所有的可用服务器。此外,此方法的执行时间可能相当长,因此如果性能要求很高,在调用此方法时应谨慎从事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值