Microsoft SQL Server JDBC Driver は Android OS をサポートしない

横井 羽衣子(よこい ういこ)
SQL Developer Support Engineer

皆様ごきげんよう。今日は、Microsoft SQL Server JDBC ドライバは Android OS で動くか?という点についてお送りします。

【今日のお題】 Microsoft SQL Server JDBC ドライバを使って SQL Azure とかにつなぎたいの!出来る?出来ない?

端的に申しますと、残念ながら弊社 JDBC ドライバは Android OS 上では事実上使うことが出来ません。
また、製品として使用されることも想定されていません。将来的にサポートされる予定も現時点ではありません。(2012/10 月現在)

Microsoft JDBC Driver 4.0 for SQL Server
https://www.microsoft.com/ja-jp/download/details.aspx?id=11774

サポートされているオペレーティングシステムは、上記リンクにてご確認いただけますが、下記の通り Android OS は含まれておりません。

システム要件

サポートされているオペレーティング システム: Linux, Unix, Windows 7, Windows Server 2008 R2, Windows Vista

  • 上記のリストは、サポートされているオペレーティング システムの例の一部です。JDBC Driver は、Java 仮想マシン (JVM) の使用をサポートするすべてのオペレーティング システムで機能するように設計されています。ただし、テストされているのは、Sun Solaris、SUSE Linux、および Windows オペレーティング システムだけです。
  • Java Development Kit: 5.0 および 6.0

弊社のリリースしている JDBC ドライバは、Type 4 ネイティブ プロトコルと呼ばれるタイプです。
基本、Type 4 なので、プラットフォームに依存せず動くという建前ではありますが、どうしても、接続に使用されるパスワード保護の処理の一環である Kerberos が関わる処理でプラットフォームに依存せざるを得ない部分があります。フルセットの Java VM (Oracle JVM / IBM JDK) であればこれらの処理に必要な処理をすることが出来ますが、Android OS の場合サブセットであるため処理を行うための完全な機能が足りず、接続が出来ない状況になってしまうのです。 

以下のエラーの例は、SQL Azure に対する接続を試行した場合の内容です。SQL Azure は接続レベルでの暗号化を要求しますが、上述の理由より Android OS の機能では十分に対応が出来ず、こうしたエラーになります。残念ながら、これはユーザ側で制御はできません。 

エラーの例

com.microsoft.sqlserver.jdbc.SQLServerException:
The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "Socket closed".

image

  

今後の弊社のシナリオとしても、動作保証対象になる予定はございません。
ないないづくしで非常に心苦しい限りですが、たとえば Java サーブレットと通信する、Web サービスと SQL Server で通信をさせ、結果を Web サービスで返すなどの実装にしていただくなどのシナリオをご検討ください。