SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources()可以得到局域网内的所有SQL SERVER服务器实例,如何得到本机的所有SQL SERVER2008实例

解决方案 »

  1.   

    SELECT Name FROM Master..SysDatabases ORDER BY Name
    c#不清楚
      

  2.   

    试试看访问注册表
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\Instance Names
      

  3.   

    C#枚举所有sql server数据库实例C# code
    DataTable dataSources = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
     DataColumn column2 = dataSources.Columns["ServerName"];
     DataColumn column = dataSources.Columns["InstanceName"];
     DataRowCollection rows = dataSources.Rows;
     string[] array = new string[rows.Count];
     for (int i = 0; i < array.Length; i++)
     {
     string str2 = rows[i][column2] as string;
     string str = rows[i][column] as string;
     if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str))
     {
     array[i] = str2;
     }
     else
     {
     array[i] = str2 + @"\" + str;
     }
     }
     Array.Sort<string>(array);
    以上是官方的做法,从 SqlDataSourceConverter 即可得到MS是如何去取得所有数据库服务器的
      

  4.   

    如果用的sql 2005 的话这样可以得到
    定义一个Conn 
    Conn.WorkstationId 这个方法可以取到实例名.
      

  5.   

    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
                string[] str_server = key.GetValueNames();
                string str_hostname = Dns.GetHostName();//取得主机名
                for (int i = 0; i < str_server.Length; i++)
                {
                    //str_server[i] = str_hostname + "\\" + str_server[i];//在SQL 实例中加上主机名
                    Console.WriteLine(str_server[i]);
                }
      

  6.   

    上面的路径能保证每台服务器都一样吗,还有如何区分是SQL 2008,谢谢
      

  7.   

    恩,我刚刚也去看了,那个100/90的项里面没有区分Instance name。
      

  8.   

    Instance Names\Sql\ 下的实例中,数据这一项里有2008,但是这一项的值我用c#取不到
      

  9.   

    我本地都看不到2008的,我的sql server在服务器上呢。不过注册表里的项基本都是能抓到的。
      

  10.   

    http://www.zxxblog.com/80
    http://blog.csdn.net/lynnlin1122/archive/2008/11/07/3248139.aspx
    你参考文章中的抓取方法试试看,不行再给我留言。