是否有可以在网络上搜索数据库实例的SQL Server的jdbc驱动程序?
只想从JDBC驱动程序模拟“OSQL -L”。不想从JNI或其他东西调用OSQL。我也不想编写自己的代码来扫描UDP端口。
我希望我的Java应用程序能够搜索实时SQL Server并向我提供可用服务器列表。这不是JDBC驱动程序的合理期望吗? OSQL.exe可以做到这一点,为什么不是JDBC驱动程序?
答案 0 :(得分:1)
JDBC API没有为此提供任何便利。您最好的选择是回退到低级Java套接字编程并测试TCP端口1433是否打开然后尝试连接它。
Socket socket = null;
try {
socket = new Socket("localhost", 1433);
System.out.println("Service is available!");
} catch (Exception e) {
System.out.println("Service is not available.");
} finally {
if (socket != null) try { socket.close(); } catch (IOException logOrIgnore) {}
}
确认该服务可用后,您可以按照常规方式将其连接到,而不使用数据库名称,并按DatabaseMetaData#getCatalogs()
获取可用目录(数据库)列表。
答案 1 :(得分:0)
在查找SQL Server实例时,osql实际上非常愚蠢。
SSMS,企业管理器等使用相同的技术,如果你的SQL框不是在默认实例的同一个房间(好的,有点夸张),它就不可靠了。
你可以做的就是根据源代码here from SQLPing1.1 and SQLPing.Net推出自己的代码......之前我已经习惯了这个代码。