我的项目快完成,现在正在写一个Console项目,目的是生成项目所需的各种配置。在生成数据库配置的时候,我不知道目标计算机上安装的SqlServer服务器信息,所以我希望使用一个工具来探测SqlServer实例的信息。我的开发计算机上安装的是SqlServer2005速成版,但是使用了网上的几种方法,都无法获取任何信息。第一种:使用System.Data.Sql.SqlDataSourceEnumerator 类,这个类是.Net 2.0 中新增加的类型,可以获取网络内所有的MS SQLServer 实例信息。
我使用了这个类,但是没有获取到任何信息,大概是我安装的是速成版的原因。第二种,是用一个System.Net.Socket.UDPClient向全网段发送广播消息,然后获取信息。
我使用UDP协议向1433端口发送一个 byte[] b = new byte[1] {2}; 的消息,而无法获取返回值信息。在SqlServer的网络配置中,打开了IP协议,并设定了IP1 地址是localhost,第二个是IP地址。端口全部是默认的1433,命名管道协议也打开了。但是我无论怎样做,还是无法得到任何安装在本地计算机上的SqlServer信息,请教高手,如何获取信息,包括主机名,实例名和版本,就这三个信息即可。

解决方案 »

  1.   

    楼主没试过 SQLDMO 吗?
      

  2.   

    http://tag.csdn.net/Article/080f46fb-88e4-4b4a-8be7-d2be6bb6c8ac.html
      

  3.   

    原文在这里http://blog.csdn.net/ltolll/archive/2006/08/31/1147540.aspx
      

  4.   

    获得局域网内所有SQL Server实例信息:DataTable tb = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();里面Servername,instanceName,IsClustered,Version都有,我刚测试了一下,没问题,这是我的代码:DataTable tb = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();if (tb.Rows.Count == 0) MessageBox.Show("Nothing get");
    else this.dataGridView1.DataSource = tb;
      

  5.   

    不是每个实例都能看到,SQL Server Management Studio里browse 所有实例也不是都能看到的,需要自己输入IP或者机器名测试。和域/权限有关系。
      

  6.   

    毛病找到到了。
    原来SQL Brower 服务没有运行,这个服务负责向客户端的命名管道及TCP/IP协议提供SqlServer信息。把这个服务打开就可以获取所有内容。
      

  7.   

    SQLDMO
    System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();