新着情報

株式会社アースリンク > 開発者ブログ > intra-mart > JDBCでSQL Server Express エディションに接続する

JDBCでSQL Server Express エディションに接続する

 

Icons made by Darius Dan from www.flaticon.com is licensed by CC 3.0 BY

 

 

今度はJDBCから接続する時にハマってしまいました。。。

 

今度はなんとJavaからJDBC経由で接続するときにこんなエラーが出て参りました。。。

 

com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host localhost, named instance sqlexpress failed. Error: "java.net.UnknownHostException: localshost". Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:227)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:5241)

    ….
 

接続先のミス等の凡ミスだろうとコードを確認。

 

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=testdb", "sa", "password");

 

どこも間違っていない。A5で接続できたじゃん!

 

Exceptionログを見たところ、UDPの「1434」ポートが開いていない事が判明。

A5SQLは1433で接続できていたので、SqlServerは1433ポートだ!と勝手に思い込んでいました。

 

というわけで、Windows側のFirewallのポートを解放し解決。

 

 

 

A5SQLはNative Client(ODBC)経由、JavaはJDBC経由で違いとしては以下となります。

ODBC Microsoftが開発したデータベースドライバ。C言語に特化
JDBC 上記のJava版

 

 

う~ん。何故にポートが違うのか。。。※何故違うかは後ほど分かり次第、記載致します。

 

 

余談ですが、JDBCに投げたSQLはSQLServer側で素直にそのまま実行している訳で無く

「exec sp_prepare」というシステムストアドプロシージャを介して実行されるので、SQLによっては「SQLツールからの実行は早いけどJDBCだと遅い」

という結果になります。

 

 

最近はずっとintra-martで開発を行ってきて、裏の面倒な部分は全部intra-martがヨロシク処理してくれていたので

この辺の知識?がご無沙汰になってしまっていて反省しております。。。

2018年05月16日(水)

テレマーケティングシステムsakuraトライアル

コールセンターシステム sakuraCTI

資料請求

お問合わせ

コラム

用語集

開発者ブログ

イントラマート

Sakuraテレマーケティングシステム

 

 

インフラソリューションのご案内

導入事例

認証マーク

アースリンクは
プライバシーマークを
取得しています。

プライバシーポリシー


SSLとは?

当サイトでは、実在性の証明とプライバシー 保護のためSSLサーバ証明書を使用しSSL 暗号化通信を実現しています。

このページの先頭へ