2009-07-02 5 views
1

ネットワーク上のデータベースインスタンスを検索できるSQL Server用のjdbcドライバはありますか?ネットワーク上のデータベースインスタンスを検索できるSQL Server用のjdbcドライバはありますか?

"OSQL -L"をJDBCドライバからエミュレートしたいだけです。 JNIなどからOSQLを呼び出す必要はありません。また、UDPポートをスキャンするための独自のコードを記述する必要もありません。

JavaアプリケーションでライブSQLサーバーを検索し、利用可能なサーバーの一覧を求めるメッセージが表示されるようにします。これはJDBCドライバにとって妥当な期待ではありませんか? OSQL.exeはそれを行うことができます、なぜ、JDBCドライバはありませんか?

+0

私もJTDSドライバフォーラムに投稿してみました:http://sourceforge.net/forum/message.php?msg_id=7476984 – djangofan

+0

私はTCPポート1433を検索したいだけです。私は検索する必要はありません他のプロトコルのインスタンスの場合 – djangofan

答えて

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) {} 
} 

は一度サービスが利用可能である場合、あなたはURLでデータベース名を指定せずに通常の方法それを接続し、DatabaseMetaData#getCatalogs()で利用できるカタログ(データベース)のリストを得ることができることを確認しました。

0

osqlは、実際にはSQL Serverインスタンスを見つけることに関して非常にばかげています。

同じテクニックがSSMS、Enterprise Managerなどで使用されていますが、SQLボックスがすべてデフォルトのインスタンスで同じ部屋にあるわけではありません(わずかではありません)。

あなたができることは、ソースコードhere from SQLPing1.1 and SQLPing.Netに基づいて自分自身をロールバックすることです。これまで私はこれまでよく慣れてきたことがあります。

関連する問題