我试图检测网络中的Microsoft SQL Server。首先,人们会阅读有关如何操作的Microsoft文档,对吧?所以我读了关于ODBC的SQLBrowseConnect
并继续使用它。我发现我安装的所有SQL Server Express版本都很开心,直到我将完成的产品交给客户进行测试。他们说它没有找到任何服务器。
事实证明,根据操作系统,使用的ODBC SQL Server客户端和其他,我不知道因素,我可以检测一些运行服务器或不运行服务器。与sqlcmd -L
的输出相比,我使用SQLBrowseConnect进行检测看起来很黯淡。我们在计算机之间移动我的应用程序,并且根据SQL Server ODBC驱动程序版本,SQL Server Native Client版本(我同时使用了两者)和Windows版本,结果不同,但是根本没有检测到某些服务器,而sqlcmd检测到它们。
然后我尝试了将0x02
的UDP数据包广播到浏览器侦听的端口1434的方法,但我只获得了SQLBrowseConnect。
顺便说一下:我今天在我的两台计算机上尝试过管理工作室 - 相同的版本,不同的Windows。在Win7上检测到3台服务器,Win2003同时检测到6台服务器。
显然有更多的方法来检测SQL Server,因为在我无法获得任何结果的计算机上,我的同事获得所有服务器,但他使用Embarcadero Delphi作为组件,我相信,使用.NET提供程序。
我刚刚阅读了那里的WMI方法,但我相信你必须提供目标计算机的用户和密码,这显然是无用的,因为我需要用户为多个服务器提供多个密码,他们不需要甚至都知道。除非我误解了什么。
无论如何,请分享任何可以用c或c ++实现的方法。请注意:我无法向计算机请求密码以连接WMI。