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

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 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 への接続についても把握しておく必要がありますので少し触れております。

image

image

 

 

ネイティブアプリケーション

C や C++ といったネイティブアプリケーションから SQL Server ( 念のため Oracle Database についても ) にアクセスする方法も以下に示します通りいくつか選択肢があります。但し、こちらも今後の新機能への対応やパフォーマンスなどを考慮しますと、SQL Server へのアクセスには最新の Microsoft ODBC Driver for SQL Server を使用いただくのが推奨となります。なお、こちらも Oracle Database への接続についても少し触れております。

image

 

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 は非推奨とはなりますが、ご参考のために接続方式を以下に纏めました。

image

 

本論とは話がそれますが、少し前に SSL3.0 の脆弱性が発見され話題となり、今後 TLS の使用が推奨されております。SQL Server のドライバー類含めた対応状況についてはこちらをご参照ください。

 

以上、今回はデータアクセスレイヤーについて纏めさせていただきました。