引用了COM 组件还是控件了的,添加了SQLDMO引用后,我写下面代码, 并可以列举出一两个本地网内的服务器,奇怪的是, 程序竟然不能发现本机子上的服务器..不知道为什么,
2  还有 它每次列举的情况不一定一样 ,,,(测试的时间间隔不长,)      SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
      SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();      for (int i = 0; i < sqlServers.Count; i++)
      {
        object srv = sqlServers.Item(i + 1);        if (srv != null)
        {
          this.comboBox5.Items.Add(srv);
        }
      }
不知道哪会错以致于不能识别到本地服务器,

解决方案 »

  1.   

    谢谢..,
    我也不大清楚. 还有 在程序开始运行时,有时可以列举出很多服务器(如5),可是 关了再开,却只能一个了,真怪!
    还有,在2000AD系统与XP也不一样,2000AD里可以读到自己的服务器,可是以XP却读不到..不懂为什么...高手支招!!!
      

  2.   

    又找到了一个:
    但感觉用起来一样..
    private string[] Getallservers()
            {
                string[] servers;
                SQLDMO.NameList num;
                SQLDMO.ApplicationClass rs=new SQLDMO.ApplicationClass();
                num=rs.ListAvailableSQLServers(); 
                servers=new string[num.Count];
                for(int i=1;i<=num.Count ;i++)
                {
                    servers[i-1]=num.Item(i);
                }
                return servers;
            } 
    ,他们申请对象和返回的不一样,  结果好像差不多...
      

  3.   

    sqlapp = new SQLDMO.Application();
                serverlist = sqlapp.ListAvailableSQLServers();
                MessageBox.Show(serverlist.Count.ToString ());
                object srv = null;
                    for (int i = 0; i < serverlist.Count; i++) 
                    {
                        srv = serverlist.Item(i+1);
                        if (srv != null) 
                            this.lstServerName.Items.Add(srv.ToString());                    
                    }
      

  4.   

    谢谢...
    看来网上只有这个了.....
    看起来,代码都差不多..
    明明有开SQL服务的,
    不懂xp为什么不能边连SQL服务器,