MS_NonADONETDataProvider - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

ADO.NET以外のデータプロバイダ

概要

  • 以下、ADO.NET 以外のデータプロバイダの種類を列挙する。

  • 接続型データアクセスをサポートする、ADO.NETの前任のデータプロバイダ。

    • ADO.NET と異なり、プロバイダ・ドライバは接続文字列を使用して切り替え可能。
    • 専用 API ではなく、裏で Jet / ODBC 等の汎用のインタフェースを用いるモノが多い。
  • サンプルなどはインターネット上から検索できる。

補足(現在このページを読む意味): ここに挙がる技術は
いずれも新規開発では使わない。ただし、

といった場面で、どの API が何を裏で使っているかを知っている必要がある。
本ページはその系譜図として読むのが実用的である。

アプリ ─┬─ DAO ────┬─ Jet ──── Access(.mdb)
         │            └─ ODBC ─── 各種 DBMS
         ├─ RDO ──────  ODBC ─── 各種 DBMS
         ├─ ADO ──────  OLE DB ─┬─ ネイティブ Provider
         │                        └─ Provider for ODBC ─ ODBC
         └─ ADO.NET ──  専用 API / OleDb / Odbc

詳細

ドライバ

Jet

  • Microsoft Jet Database Engine にアクセスする Native Jet ISAM Driver。
  • Joint Engine Technology の略で、Microsoft Accessで使用されている。
  • SQL Server 2005 Express Edition では MSDE(Microsoft Desktop Engine)が搭載された。

移行メモ(正誤): MSDE(Microsoft SQL Server Desktop Engine)は
SQL Server 2000 世代の無償エディションであり、
SQL Server 2005 でその後継として登場したのが Express Edition である。
「SQL Server 2005 Express Edition で MSDE が搭載された」のではなく、
MSDE が Express Edition に置き換わったというのが正しい。
また、MSDE は Jet ではなく SQL Server のエンジンであり、
Jet とは別系統の製品である点にも注意。

補足(最新化:Jet の後継): 32bit の Jet 4.0 は OS の一部として残るが、
64bit 版が存在しないため64bit対応の障害になりやすい。
現在は ACE(Access Database Engine)
Microsoft.ACE.OLEDB.12.0 / 16.0)が後継で、64bit 版も提供されている
WOW64も参照)。

ODBC

  • データへのアクセスを統一化することを目的としてマイクロソフトが 1992 年に発表。

  • C 言語上の API レベルで統一したインターフェイスとしてデータベースに接続するための API。

  • 1995 年には、X/Open と ISO が進めていた「SQL/CLI」と標準化を合わせ、SQL 標準の一部となった。

  • ODBC もしくは SQL/CLI は

    • 多くの RDBMS でサポートされており、且つ、
    • ODBC はほとんどの場合で SQL/CLI のスーパーセットとなっている。
  • Java では、

    • 嘗て JDBC-ODBC ブリッジが使用されていたが、
    • JDBC のサポートが整ってきたこともあり、
      Java 7 では非推奨、Java 8 では標準から削除された。

API系

DAO

  • 1992 年 11 月に登場し、VC++VBをサポート。
  • 主に Jet 接続に用いられるが、v3.5 から ODBC 接続も可能になった。
  • v3.6 が最後のバージョンで 64bit 対応などはされない。

RDO

  • Visual Basic 4、5、6 に含まれていた API で、
  • ODBC データベース専用として設計されたラッパー。
  • v2.0 が最後のバージョンで 64bit 対応などはされない。

移行メモ(誤字): 元ページの「設計さたラッパー」は「設計されたラッパー」の誤記。

COM系

  • COMベースの DBMS 接続用 API。
  • VB6、VBA、VBScriptなどからデータアクセスする場合に使用できる。

OLE DB

  • COMを使って実装されたインタフェース群。

  • MDAC スタックの一部で、以下のテクノロジから利用される。

  • OLE DB の discon 話

ADO

RDO や DAO の後継。

移行メモ(誤字): 元ページの「Close すれは」は「Close すれ」の誤記。

補足(ADODB.Recordset の「切断」): 上記の
「レコードセットを Close すれば非接続型」という記述は、正確には
CursorLocation = adUseClient にした上で
Recordset.ActiveConnection = Nothing として
**接続だけを切り離す(disconnected recordset)**操作を指す。
単に Close すると Recordset 自体が破棄される。

OO4O

Oracle 社のリリースしたカスタムのデータプロバイダ。

  • OO4O は、Oracle Objects for OLE の略称。
  • OLE は、OLE DB ではなく、COMの OLE を意味しているものと思われる。
  • ドライバは、恐らく、Oracle ネイティブのドライバと思われる。

64bit対応

OO4O は64bit対応がされていない。

  • 詳しくは、コチラを参照して下さい。

サポート(discon)

Oracle 11g(11.2) が、OO4O をサポートする最後のバージョン。

従って、今後、新規の OO4O 採用は推奨されない
(VB6、VBA、VBScript 等からは ADO を使用する)。

移行

  • OO4O から ADO(ADO.NET) への移行は
    オブジェクトモデル、API が異なるため困難。

  • OraDynaset を使用した接続型データアクセスが中心。
    非接続型の ADO.NET への移行には書換が必要になる。

従って、コンバージョンではなく再構築になる。

参考

その他

MDAC / WDAC系

概要

  • データ・アクセスのために用意された、汎用的で標準的なインターフェイスの総称。

  • ODBC、OLE DB、ADO、といったインターフェイスを利用することができる。

  • MDAC 2.8 以降 Windows DAC 6.0(WDAC) の名称となっている。

  • WDAC は、Vista から OS 標準ライブラリになっており、既に導入されている。

参考

SNAC / SQLNCLI

  • 双方とも、SQL Server Native Client の略。

  • SQL Server Native Client は、SQL Server 2005 (9.x) で導入された、
    ODBC、OLE DB の両方で使用されるスタンドアロンのデータ アクセス API。

推奨・非推奨

SQL Server 2016 以降は、SQL Server Native Client (SNAC / SQLNCLI) は非推奨。

  • バージョン間の関係

    • SQL Server 2000 - 2008 Native Client (SQLNCLI10)

    • SQL Server 2005 - 2012 Native Client (SQLNCLI11)

  • SQL Server 2014 以降の SQL Server Native Client は存在しない。

補足(最新化): SQL Server Native Client は
2022 年 8 月にサポートを終了しており、現在は完全に利用不可と考えるべき。
TLS 1.2 / TLS 1.3、UTF-8 照合順序、Always Encrypted with secure enclaves
などの新機能にも対応しない。移行先は以下。

用途 移行先
.NET Microsoft.Data.SqlClient(NuGet)
ネイティブ / SSIS / リンク サーバ Microsoft OLE DB Driver for SQL Server(MSOLEDBSQL)
ODBC 経由 Microsoft ODBC Driver 18 for SQL Server

接続文字列の Provider=SQLNCLI11
Driver={SQL Server Native Client 11.0} を検索して洗い出すとよい。
なお、ODBC Driver 18 以降は Encrypt の既定が Yes に変わっているため、
移行時に証明書の検証で接続できなくなるケースがある。

サポート(対象と期間)

サポート(対象と期間)に関しては以下参照。

ODBC / OLE DB

SNAC / SQLNCLI の代替として、ODBC / OLE DB ドライバの単品利用ができる。

VB6、VBAから使う

上記の COM 系を利用できる。

VC++から使う

以下の様な感じでしょうか。

COM

  • ODBC

    • afxdb.h(MFC)
    • Provider
  • DAO(DAO.DBEngine

    • Jet
    • ODBC
  • RDO(RDO.

    • ODBC 専用
  • OLE DB

    • atldbcli.h(ATL)
    • Provider
      • Microsoft OLE DB Provider for ODBC
      • Microsoft OLE DB Provider for Microsoft Jet
      • Microsoft Office 12.0 Access Database Engine OLE DB Provider
      • , etc.
  • ADO(ADODB.

    • OLE DB

C++/CLI

ADO.NETデータプロバイダを使用可能。

参考

ADO.NETデータプロバイダ

ADO.NETデータプロバイダ

  • .NET Framework.NET Core
    ネイティブのデータ・プロバイダがリリースされている。
  • .NET Coreのデータ・プロバイダなどは 0 依存でリリースされている。

Wikipedia

ドライバ

API

CX's Hello, World!


Tags: 移行, データアクセス

⚠️ **GitHub.com Fallback** ⚠️