我知道可以使用NetServerEnum 函数或者sqldmo.dll中的方法获取网络内所有sql server服务器。但是这些方法都不能列出每个服务器上所有的实例名称。现在通过访问注册表取得了本机上所有sql server的实例。不知道有什么方法可以获取其他机器上所有的实例名称呢?

解决方案 »

  1.   

    WNetEnumResource试试行不行。
    我的印象中好像只有SQL SERVER机器上启动了网络代理服务才能被其它机器寻找所有的数据库实例
      

  2.   

    看这有没有用? http://www.yulublog.com/software/p685/A68584261.shtml
      

  3.   

    大概看了一下3楼推荐的文章,delphi我不太懂,不过我的看法还是利用sqldmo.dll中的listavailablesqlservers方法来枚举所有的服务器,而不是所有的实例。2楼的说用WNetEnumResource,这个没有试过。
    不知道还有没有其他方法?
      

  4.   

    其实sqldmo.dll应该是可以枚举全部数据库服务器(包括实例),只是有时候会遗漏一些,就算SQLServer服务管理器有时候也不一定能枚举全。
    还可以用OLE DB的CEnumerator类来枚举