SQL Server データアクセスレイヤーについて
Microsoft Japan Data Platform Tech Sales Team
Microsoft が提供するドライバー類はいくつかありますが、何を使用するか判断に迷ったことがあるかと思います。そこで今回はデータアクセスレイヤーについて少し整理いたします。
先ず、代表的なドライバー類は以下となります。
ADO.NET
- .NET Framework のプログラミングでデータ アクセスサービスを使用できるようにするためのクラスの集合
- .NET Framework に同梱
- DataSet と .NET Framework Data Provider の二つの主要コンポーネントで構成
- DataSet は、どのデータ ソースにも依存しないデータ アクセスを行うことを目的に使用
- .NET Framework データ プロバイダーは、データベースに接続して、コマンドを実行したり、結果を取得したりする目的に使用 ( 例えば SQL Server へのアクセスに関しては .NET Framework Data Provider for SQL Server を提供)
Microsoft ODBC Driver for SQL Server
Windows版、Linux ( Ubuntu , Red Hat Linux , SUSE Linux ) 版
(プレビュー)を提供 (2016/10/24修正 RTM されたためプレビュー表記は削除しました(アナウンスブログ))SQL Server Native Client にて OLE DB , ODBC Driver を提供していましたが、 SQL Server 2012 を最後に OLE DB Provider が提供されなくなり分離して個別提供開始
Microsoft® ODBC Driver 11 for SQL Server® - Windows Microsoft® ODBC Driver 13 for SQL Server® – Windows+Linux (2016/7/26修正 RTMされたためPreview表記は削除しました) (2016/10/24修正 Windows版、およびLinux版のダウンロードサイトが統一されたため修正) Microsoft® ODBC Driver 13 (Preview) for SQL Server® - Ubuntu Linux(2016/10/24修正 Windows版、およびLinux版のダウンロードサイトが統一されたため削除)Microsoft® ODBC Driver 13 and 11 Previews for SQL Server® - SUSE Linux(2016/10/24修正 Windows版、およびLinux版のダウンロードサイトが統一されたため削除)Microsoft® ODBC Driver 13 (Preview) and 11 for SQL Server® - Red Hat Linux(2016/10/24修正 Windows版、およびLinux版のダウンロードサイトが統一されたため削除)Microsoft® ODBC Driver 13.1 for SQL Server® – Windows (2016/8/2追記 2016/8/1にリリースされたため(アナウンスブログ)) ODBC Driver 13.1 for Linux (2017/2/15追記 2017/2/8にリリースされたため(アナウンスブログ))
SQL Server Native Client ( SQLNCLI )
- OLE DB Provider, ODBC Driver をひとつの DLL で提供
- SQL Server 2005 から提供開始し、SQL Server 2012 で開発終了(アナウンスブログ)
- ODBC Driver は上記 Microsoft ODBC Driver for SQL Server として分離し継続提供
Microsoft JDBC Driver for SQL Server
Microsoft が提供する SQL Server 用 JDBC Driver
Type 4 Thin Driver
Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server(2016/7/22修正 RTMされたためPreview表記は削除しました)
Microsoft Data Access Components ( MDAC ) / Windows Data Access Components ( WDAC )
- Windows OS に同梱
- Windows XP / Windows Server 2003 までは MDAC として、Windows Vista / Windows Server 2008 からは WDAC として提供
- ADO, OLE DB ( OLE DB Core Services, OLE DB Provider, OLE DB Provider for ODBC Driver など), ODBC ( ODBC Driver Manager, ODBC Driver ) などのコンポーネントで構成
- SQL Server 2005 以降の新機能には未対応
上記より、SQL Server への今後のアクセスレイヤーとして選択いただく推奨は、 .NET Frameowrk Data Provider for SQL Server、Microsoft ODBC Driver for SQL Server、Microsoft JDBC Driver for SQL Server となりますが、それぞれどういったケースでご選択いただくのかよいかを以下で纏めました。
.NET アプリケーション
.NET アプリケーションから SQL Server にアクセスする方法は以下に示します通りいくつか選択肢があります。但し、今後の新機能への対応やパフォーマンスなどを考慮しますと、SQL Server へのアクセスには .NET Frameowrk Data Provider for SQL Server を使用いただくのが推奨となります。なお、SQL Server の ETL 機能である Integration Services を使用して Oracle Database からデータを取得するなどといった場合には Oracle Database への接続についても把握しておく必要がありますので少し触れております。
ネイティブアプリケーション
C や C++ といったネイティブアプリケーションから SQL Server ( 念のため Oracle Database についても ) にアクセスする方法も以下に示します通りいくつか選択肢があります。但し、こちらも今後の新機能への対応やパフォーマンスなどを考慮しますと、SQL Server へのアクセスには最新の Microsoft ODBC Driver for SQL Server を使用いただくのが推奨となります。なお、こちらも Oracle Database への接続についても少し触れております。
Java アプリケーション
Java アプリケーションからのアクセスには JDBC を使用いただくことになりますが、それぞれのバージョンでサポートされる JDK などについて、以下に少し纏めました。
(2016/7/5 サポートマトリックスに表記変更いたしました)
[Microsoft JDBC Drivers 6.0,4.2, 4.1, and 4.0 for SQL Server(2016/7/22修正 RTMされたためPreview表記は削除しました)]
Support JDK(コンパイル可能) | Support JRE(実行可能) | JDBC Compliance | ||
Microsoft JDBC Drivers 6.0 | sqljdbc.jar | JDK 5.0 | JRE 5.0 | JDBC 3.0 |
Microsoft JDBC Drivers 6.0 | sqljdbc4.jar | JDK 6.0 | JRE 6.0, 7.0 | JDBC 4.0 |
Microsoft JDBC Drivers 6.0 | sqljdbc41.jar | JDK 7.0 | JRE 7.0 | JDBC 4.1 |
Microsoft JDBC Drivers 6.0 | sqljdbc42.jar | JDK 8.0 | JRE 8.0 | JDBC 4.1, 4.2 |
Microsoft JDBC Drivers 4.2 | sqljdbc.jar | JDK 5.0 | JRE 5.0 | JDBC 3.0 |
Microsoft JDBC Drivers 4.2 | sqljdbc4.jar | JDK 6.0 | JRE 6.0, 7.0 | JDBC 4.0 |
Microsoft JDBC Drivers 4.2 | sqljdbc41.jar | JDK 7.0 | JRE 7.0 | JDBC 4.1 |
Microsoft JDBC Drivers 4.2 | sqljdbc42.jar | JDK 8.0 | JRE 8.0 | JDBC 4.1, 4.2 |
Microsoft JDBC Drivers 4.1 | sqljdbc.jar | JDK 5.0 | JRE 5.0 | JDBC 3.0 |
Microsoft JDBC Drivers 4.1 | sqljdbc4.jar | JDK 5.0, 6.0 | JRE 6.0, 7.0 | JDBC 4.0 |
Microsoft JDBC Drivers 4.1 | sqljdbc41.jar | JDK 5.0, 6.0, 7.0 | JRE 7.0 | JDBC 4.0 |
Microsoft JDBC Drivers 4.0 | sqljdbc.jar | JDK 5.0 | JRE 5.0 | JDBC 3.0 |
Microsoft JDBC Drivers 4.0 | sqljdbc4.jar | JDK 6.0 | JRE 6.0, 7.0 | JDBC 4.0 |
なお、SQL Server に接続する際の JDBC プロパティの推奨設定を以下ホワイトペーパーの P21 に纏めておりますのでご一読いただければと思います。
[SQL Server 2012 徹底検証シリーズ] ユーザーベネフィットを追求した Oracle Database & Java からの SQL Server & Java へのマイグレーション
OLE DB
今後 SQL Server へのアクセスについて OLE DB は非推奨とはなりますが、ご参考のために接続方式を以下に纏めました。
本論とは話がそれますが、少し前に SSL3.0 の脆弱性が発見され話題となり、今後 TLS の使用が推奨されております。SQL Server のドライバー類含めた対応状況についてはこちらをご参照ください。
以上、今回はデータアクセスレイヤーについて纏めさせていただきました。
Comments
- Anonymous
June 22, 2016
JDBC Driver 4.2、6.0 Preview は JDK8しかサポートしていません。7以下は例外吐きます。https://msdn.microsoft.com/en-us/library/ms378422(v=sql.110).aspx に sqljdbc42.jar は、Requires a Java Runtime Environment (JRE) 8.0. Using JRE 7.0 or lower will throw an exception.と記載されています。- Anonymous
July 04, 2016
The comment has been removed
- Anonymous