MS_NonADONETDataProvider - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(データプロバイダ)
- ADO.NET以外のデータプロバイダ
- ADO.NETデータプロバイダ
-
以下、ADO.NET 以外のデータプロバイダの種類を列挙する。
-
接続型データアクセスをサポートする、ADO.NETの前任のデータプロバイダ。
- ADO.NET と異なり、プロバイダ・ドライバは接続文字列を使用して切り替え可能。
- 専用 API ではなく、裏で Jet / ODBC 等の汎用のインタフェースを用いるモノが多い。
-
サンプルなどはインターネット上から検索できる。
補足(現在このページを読む意味): ここに挙がる技術は
いずれも新規開発では使わない。ただし、
- VB6、VBA、VBScriptで書かれた既存資産の保守
- Access、Access VBAや Excel マクロの解析
- 移行・マイグレーションの際の移行元技術の把握
といった場面で、どの API が何を裏で使っているかを知っている必要がある。
本ページはその系譜図として読むのが実用的である。アプリ ─┬─ DAO ────┬─ Jet ──── Access(.mdb) │ └─ ODBC ─── 各種 DBMS ├─ RDO ────── ODBC ─── 各種 DBMS ├─ ADO ────── OLE DB ─┬─ ネイティブ Provider │ └─ Provider for ODBC ─ ODBC └─ ADO.NET ── 専用 API / OleDb / Odbc
- 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も参照)。
-
データへのアクセスを統一化することを目的としてマイクロソフトが 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 では標準から削除された。
- 1992 年 11 月に登場し、VC++、VBをサポート。
- 主に Jet 接続に用いられるが、v3.5 から ODBC 接続も可能になった。
- v3.6 が最後のバージョンで 64bit 対応などはされない。
- Visual Basic 4、5、6 に含まれていた API で、
- ODBC データベース専用として設計されたラッパー。
- v2.0 が最後のバージョンで 64bit 対応などはされない。
移行メモ(誤字): 元ページの「設計さたラッパー」は「設計されたラッパー」の誤記。
- COMベースの DBMS 接続用 API。
- VB6、VBA、VBScriptなどからデータアクセスする場合に使用できる。
-
COMを使って実装されたインタフェース群。
-
MDAC スタックの一部で、以下のテクノロジから利用される。
-
OLE DB の discon 話
- 一時期、OLE DB の discon 話が話題となっていた。
- しかし、取り消しになったらしい。
RDO や DAO の後継。
-
接続型データアクセスが既定と考えられている API 設計だが、
取得したレコードセットを Close すれば非接続型データアクセスが可能。 -
ODBC に代わり OLE DB と呼ばれるプロバイダを選択することで
データベース固有の接続方法を抽象化するが、 -
既存の ODBC との接続のためのラップである
「OLE DB Provider for ODBC」を使うこともできる。 -
ADO 超入門 - Access VBA Tips
http://www.happy2-island.com/access/gogo03/capter00301.shtml -
参考
-
ADO Version 2.6
https://learn.microsoft.com/ja-jp/previous-versions/windows/desktop/ms675532(v=vs.85) -
ActiveX Data Objects - Wikipedia
https://ja.wikipedia.org/wiki/ActiveX_Data_Objects
-
移行メモ(誤字): 元ページの「Close すれは」は「Close すれば」の誤記。
補足(
ADODB.Recordsetの「切断」): 上記の
「レコードセットを Close すれば非接続型」という記述は、正確には
CursorLocation = adUseClientにした上で
Recordset.ActiveConnection = Nothingとして
**接続だけを切り離す(disconnected recordset)**操作を指す。
単にCloseすると Recordset 自体が破棄される。
Oracle 社のリリースしたカスタムのデータプロバイダ。
- OO4O は、Oracle Objects for OLE の略称。
- OLE は、OLE DB ではなく、COMの OLE を意味しているものと思われる。
- ドライバは、恐らく、Oracle ネイティブのドライバと思われる。
OO4O は64bit対応がされていない。
- 詳しくは、コチラを参照して下さい。
Oracle 11g(11.2) が、OO4O をサポートする最後のバージョン。
従って、今後、新規の OO4O 採用は推奨されない
(VB6、VBA、VBScript 等からは ADO を使用する)。
-
Oracle Objects for OLE の紹介
https://docs.oracle.com/cd/E16338_01/win.112/b58887/intro.htmOracle Database 11g リリース2(11.2) は、Oracle Objects for OLE をサポートする最後のデータベース・バージョンです。
-
ODAC のリリース情報(対応状況)
- Oracle Data Access Components (ODAC) for Windows Downloads
https://www.oracle.com/database/technologies/dotnet-odacdeploy-downloads.html
- Oracle Data Access Components (ODAC) for Windows Downloads
-
OO4O から ADO(ADO.NET) への移行は
オブジェクトモデル、API が異なるため困難。 -
OraDynasetを使用した接続型データアクセスが中心。
非接続型の ADO.NET への移行には書換が必要になる。
従って、コンバージョンではなく再構築になる。
-
Oracle Objects for OLE の紹介
https://docs.oracle.com/cd/E16338_01/win.112/b58887/intro.htm -
OTN Japan - 意外と簡単! .NET で Oracle:oo4o から ODP.NET 移行編
http://otndnld.oracle.co.jp/easy/dotnet/oo4otoodp
-
データ・アクセスのために用意された、汎用的で標準的なインターフェイスの総称。
-
ODBC、OLE DB、ADO、といったインターフェイスを利用することができる。
-
MDAC 2.8 以降 Windows DAC 6.0(WDAC) の名称となっている。
-
WDAC は、Vista から OS 標準ライブラリになっており、既に導入されている。
-
Microsoft Data Access Components - Wikipedia
https://en.wikipedia.org/wiki/Microsoft_Data_Access_Components -
MDAC/Windows DAC を使用するアプリケーションの開発/動作環境
https://learn.microsoft.com/ja-jp/sql/connect/oledb/applications-using-older-mdac-versions -
MDAC を新バージョンにアップグレードする方法 - @IT
https://www.atmarkit.co.jp/fwin2k/win2ktips/912mdacupg/mdacupg.html
-
双方とも、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 は存在しない。
-
https://learn.microsoft.com/ja-jp/sql/relational-databases/native-client/sql-server-native-client
SQL Server 2014 は、SQL Server 2012 Native Client をインストールします。SQL Server 2014 Native Client は存在しません。
SQL Server Native Client (SQLNCLI) は非推奨であり、新しい開発作業での使用はお勧めしません。
-
補足(最新化): 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に変わっているため、
移行時に証明書の検証で接続できなくなるケースがある。
サポート(対象と期間)に関しては以下参照。
- 参考
- Microsoft SQL Server のドライバーの履歴 - SQL Server | Microsoft Learn
https://learn.microsoft.com/ja-jp/sql/connect/connect-history - SNAC lifecycle explained | SQL Server Release Services
https://learn.microsoft.com/en-us/archive/blogs/sqlreleaseservices/snac-lifecycle-explained
- Microsoft SQL Server のドライバーの履歴 - SQL Server | Microsoft Learn
SNAC / SQLNCLI の代替として、ODBC / OLE DB ドライバの単品利用ができる。
-
SQL Server Native Client (SQLNCLI) としての提供は、
- SNAC Build Number 11 で終わっており、
- SNAC Build Number 12 以降では、ドライバ単品として提供されている模様。
-
最近は、様々な OS 向けにドライバが提供されている。
ただし、コチラも、SNAC を名乗っているのでヤヤコシイ。- SQL Server 2005 to 2014 , SNAC 11(12.0.x)
- SQL Server 2008 to 2016 , SNAC 13(13.0.x, 13.1.x)
-
Microsoft Learn
-
Microsoft OLE DB Driver for SQL Server
https://learn.microsoft.com/ja-jp/sql/connect/oledb/oledb-driver-for-sql-server -
Microsoft ODBC Driver for SQL Server
https://learn.microsoft.com/ja-jp/sql/connect/odbc/microsoft-odbc-driver-for-sql-server
-
上記の COM 系を利用できる。
- Visual C++ でのデータ アクセス
https://learn.microsoft.com/ja-jp/cpp/data/data-access-programming-mfc-atl
以下の様な感じでしょうか。
-
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
ADO.NETデータプロバイダを使用可能。
-
.NET Frameworkや.NET Coreで
ネイティブのデータ・プロバイダがリリースされている。 - .NET Coreのデータ・プロバイダなどは 0 依存でリリースされている。
-
Open Database Connectivity
https://ja.wikipedia.org/wiki/Open_Database_Connectivity -
Microsoft Jet Database Engine
https://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine
-
Data Access Objects
https://ja.wikipedia.org/wiki/Data_Access_Objects -
Remote Data Objects
https://ja.wikipedia.org/wiki/Remote_Data_Objects -
ActiveX Data Objects
https://ja.wikipedia.org/wiki/ActiveX_Data_Objects
Tags: 移行, データアクセス