我正在尝试用Java编写一个程序,它必须检查特定机器上是否安装了SQL Server(2008)。检查注册表项是唯一的解决方案吗?我更喜欢基于文件的解决方案。
目前,我正在检查OSQL.exe
文件夹中是否存在<Installation Path>\100\Tools\Binn
(我用它来执行查询和SQL脚本)。 100
指定了什么?可以在程序中进行硬编码,还是必须从安装路径开始搜索OSQL.exe
文件?
答案 0 :(得分:0)
对我而言,这种方法很混乱,并且充满了几个看不见的陷阱。我希望用户断言db是否存在,如果是,请求连接URL,用户名和传递,您可以尝试创建一个简单的jdbc连接来检查它是否正在运行。
答案 1 :(得分:0)
您的问题有点不清楚,特别是如果您需要枚举本地和/或远程实例,这一点并不明显?对于本地实例,搜索注册表比扫描文件系统更可靠,对于远程实例,sqlcmd.exe可以列出网络上的实例。这个page很好地概述了选项(2005年,但它们仍然适用于2008年)。
如果您可以call .NET from Java,则可以使用Smo Server对象获取有关实例的大量信息,包括安装路径。本网站上有很多关于枚举实例和收集有关它们的信息的问题。
最后,请注意osql.exe是deprecated所以你应该使用sqlcmd.exe。