枚举局域网内所有的 SQL Server 服务器实例名

来源:互联网 发布:怎么开淘宝旗舰店 编辑:程序博客网 时间:2024/06/12 01:18

如果希望检查一个指定名称的 SQL Server 服务器是否存在,或希望给用户一个自己挑选需要连接的 SQL 服务器的话,就需要先枚举出局域网内所有的 SQL Server 服务器实例名称。我所知的方法有三种:


1. 使用 SQLDMO 对象的 ListAvailableSQLServers 方法
   loSqlDMO = CreateObject('SQLDMO.Application')
   loSvrs = loSqlDMO.ListAvailableSQLServers()
   for each lcSvr in loSvrs 
       ? lcSvr
   endfor
   此方法最简单,功能也完整,可以枚举出缺省和非缺省实例名的所有 SQL Server 实例。缺点是运行代码的机器上必须安装了 sqldmo 对象组件,如果机器上已安装了 sql server,或者你自行安装了这个组件自然没问题,然而如果是一普通的客户端,它只需要连接到 SQL 服务器上取数据,或者你只是想在安装 SQL Server 前检查安装环境,则可能因为没有这个组件而无法达到目的。

 

2. 使用 api 函数 NetServerEnum 枚举指定类型的服务器

这只是一段简单的代码,没有任何错误处理。这个 api 函数也可以检测出所有可用的 SQL Server 服务器,优点是速度快,不需要安装任何附加的组件,缺点是无法列出非缺省安装时的实例名,而且有时 SQL 服务启动后要很久才能探测到。

3. 使用 ODBC  api 函数枚举指定类型的服务器 

这个 ODBC api 函数族兼顾了方法1和2的部分优点,同样不需要任何附加的安装组件,同时又可以列出所有缺省和非缺省安装的实例名,只是速度跟方法 1 差不多。

 

原创粉丝点击