是否有SQL Server的jdbc驱动程序可以在网络上搜索数据库实例?

时间:2009-07-02 18:58:47

标签: sql-server jdbc

是否有可以在网络上搜索数据库实例的SQL Server的jdbc驱动程序?

只想从JDBC驱动程序模拟“OSQL -L”。不想从JNI或其他东西调用OSQL。我也不想编写自己的代码来扫描UDP端口。

我希望我的Java应用程序能够搜索实时SQL Server并向我提供可用服务器列表。这不是JDBC驱动程序的合理期望吗? OSQL.exe可以做到这一点,为什么不是JDBC驱动程序?

2 个答案:

答案 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推出自己的代码......之前我已经习惯了这个代码。