2009-07-02 2 views
1

네트워크상의 데이터베이스 인스턴스를 검색 할 수있는 SQL Server 용 jdbc 드라이버가 있습니까?네트워크상의 데이터베이스 인스턴스를 검색 할 수있는 SQL Server 용 jdbc 드라이버가 있습니까?

"OSQL -L"을 JDBC 드라이버에서 에뮬레이트하고 싶을뿐입니다. JNI 등에서 OSQL을 호출하고 싶지는 않습니다. 또한 UDP 포트를 검색하기 위해 자체 코드를 작성하지 않아도됩니다.

Java 응용 프로그램에서 실제 SQL Server를 검색하고 사용 가능한 서버 목록을 표시하도록 할 수 있습니다. 이것은 JDBC 드라이버에 대한 합리적인 기대가 아닌가? OSQL.exe가 그렇게 할 수 있으며 왜 JDBC 드라이버가 필요하지 않을까요?

+0

나는 또한 JTDS 드라이버 포럼에 게시하려고 시도했다. http://sourceforge.net/forum/message.php?msg_id=7476984 – djangofan

+0

나는 단지 TCP 포트 1433을 검색하려고한다. 검색 할 필요가 없다. 다른 프로토콜의 경우 – djangofan

답변

1

JDBC API은 이에 대한 기능을 제공하지 않습니다. 최선의 방법은 저수준 자바 소켓 프로그래밍으로 돌아가서 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) {} 
} 

일단 다음 URL에서 데이터베이스 이름없이 그것을 일반적인 방법 을 연결하고 DatabaseMetaData#getCatalogs()에 의해 가능 카탈로그 (데이터베이스)의 목록을 얻을 수 있으며, 서비스를 사용할 수 있음을 확인.

0

osql은 SQL Server 인스턴스를 찾을 때 실제로 매우 어리 석습니다.

동일한 기술이 SSMS, Enterprise Manager 등에서 사용되며 SQL 상자가 기본 인스턴스로 같은 방 (모두 약간의 과장법)에 있지 않으면 신뢰할 수 없습니다.

당신이 할 수있는 일은 전에 좋은 영향을 주었던 소스 코드 here from SQLPing1.1 and SQLPing.Net ...을 기반으로 자신 만의 롤을 만드는 것입니다.

관련 문제