天天看点

解析c#得到局域网内所有sqlserver数据库实例

官方的做法是这样的:

using System.Data.Sql;  

class Program  

{  

  static void Main()  

  {  

    // Retrieve the enumerator instance and then the data.  

    SqlDataSourceEnumerator instance =  

      SqlDataSourceEnumerator.Instance;  

    System.Data.DataTable table = instance.GetDataSources();  

    // Display the contents of the table.  

    DisplayData(table);  

    Console.WriteLine("Press any key to continue.");  

    Console.ReadKey();  

  }  

  private static void DisplayData(System.Data.DataTable table)  

    foreach (System.Data.DataRow row in table.Rows)  

    {  

      foreach (System.Data.DataColumn col in table.Columns)  

      {  

        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);  

      }  

      Console.WriteLine("============================");  

    }  

请看遇到的问题及解决方法:

实际上问题就是,得到的结果只有服务器名字,但由于是默认实例,所以并没有实例名字。而且,假如安装的是sqlserver,则连接数据库是必须是 服务器\sqlexpress(默认实例名称);假如安装的是完整版的sqlexpress,则只需 服务器 即可连接。这就造成了不少问题。 上边百度给出比较好的解决方法。

本文转自 huohe2009 51CTO博客,原文链接:http://blog.51cto.com/zhaojie/932275