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

如果希望检查一个指定名称的 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 差不多。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值