「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>データプロバイダ]]

* 目次 [#c06317bb]
#contents

*概要 [#m1dd588d]
以下、ADO.NET以外のデータプロバイダの種類を列挙する。
-以下、ADO.NET以外のデータプロバイダの種類を列挙する。

接続型データアクセスをサポートする、ADO.NETの前任のデータプロバイダ。
-接続型データアクセスをサポートする、ADO.NETの前任のデータプロバイダ。
--ADO.NETと異なり、プロバイダー・ドライバは接続文字列を使用して切り替え可能。
--専用APIではなく、裏で[[Jet>#f99f06b9]] / [[ODBC>#b05ab1e4]]等の汎用のインタフェースを用いるモノが多い。

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

-ADO.NETと異なり、プロバイダー・ドライバは接続文字列を使用して切り替え可能。

-サンプルなどはインターネット上から検索できる。

*詳細 [#m20fc2e6]

**COM系 [#k32b2b64]
**ドライバ [#ddadce1e]

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

***ODBC [#b05ab1e4]
-データへのアクセスを統一化することを目的としてマイクロソフトが1992年に発表
-C言語上のAPIレベルで統一したインターフェイスとしてデータベースに接続するためのAPI
-1995年には、X/OpenとISOが進めていた「SQL/CLI」と標準化を合わせ、SQL標準の一部となった。

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

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

**API系 [#a4765b6b]

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

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

**[[COM]]系 [#k32b2b64]
-[[COM]]ベースの DBMS 接続用 API 。
-[[VB6、VBA、VBScript>Visual Basic]]などからデータアクセスする場合に使用できる。

***OLE DB [#da504ca1]
-[[COM]]を使って実装されたインタフェース群
-MDACスタックの一部で、以下のテクノロジから利用される。

***ADO [#v54e423d]
[[RDO>#rf9d78c2]]や[[DAO>#e948d3e2]]の後継

-接続型データアクセスが既定と考えられているAPI設計だが、~
取得したレコードセットをCloseすれは非接続型データアクセスが可能。

-[FILE] ODBC、OLEDB、ADO、RDS での接続文字列の~
使用方法を説明するための MDACCON.EXE ファイル~
https://support.microsoft.com/kb/193332/JA?wa=wsignin1.0
-[[ODBC>#b05ab1e4]]に代わり[[OLE DB>#da504ca1]]と呼ばれるプロバイダを選択することでデータベース固有の接続方法を抽象化するが、

-既存の[[ODBC>#b05ab1e4]]との接続のためのラップである「OLE DB Provider for ODBC」を使うこともできる。

-ADO超入門 - Access VBA Tips~
http://www.happy2-island.com/access/gogo03/capter00301.shtml

-参考

--ADO Version 2.6~
http://msdn.microsoft.com/ja-jp/library/cc407851.aspx

--ActiveX Data Objects - Wikipedia~
http://ja.wikipedia.org/wiki/ActiveX_Data_Objects

**OO4O [#l58e3f7d]
Oracle社のリリースしたカスタムのデータプロバイダ。~
#OO4Oは、Oracle Objects for OLEの略称
Oracle社のリリースしたカスタムのデータプロバイダ。
-OO4Oは、Oracle Objects for OLEの略称
-OLEは、[[OLE DB>#da504ca1]]ではなく、[[COM]]のOLEを意味しているものと思われる。
-ドライバは、恐らく、Oracleネイティブのドライバと思われる。

***[[64bit対応]] [#n2da6478]
OO4Oは[[64bit対応]]がされていない。~

-詳しくは、[[コチラ>WOW64#v281156a]]を参照して下さい。

***サポート(discon) [#obe75222]
Oracle11g(11.2)が、OO4Oをサポートする最後のバージョン。

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

-Oracle Objects for OLEの紹介~
http://docs.oracle.com/cd/E16338_01/win.112/b58887/intro.htm
>Oracle Database 11gリリース2(11.2)は、Oracle Objects for OLEをサポートする最後のデータベース・バージョンです。

-ODACのリリース情報(対応状況)
--Oracle Data Access Components (ODAC) for Windows Downloads~
32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio~
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
---ODAC 12c Release 3 (12.1.0.2.1) Installation Instructions, Setup, and Notes~
http://www.oracle.com/technetwork/topics/dotnet/downloads/install121021-2389380.html
---ODAC 11.2.0.3.0 Installation Instructions, Setup, and Notes~
http://www.oracle.com/technetwork/topics/dotnet/downloads/install112030-1440546.html

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

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

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

***参考 [#rb67e981]

-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

*その他 [#ecc28952]

**MDAC / WDAC系 [#sd077726]

***概要 [#y2c76426]
-データ・アクセスのために用意された、汎用的で標準的なインターフェイスの総称

-ODBCやADO、OLE DBといったインターフェイスを利用することができる。
-[[ODBC>#b05ab1e4]]、[[OLE DB>#da504ca1]]、ADO、といったインターフェイスを利用することができる。

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

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

***参考 [#q7c7428a]
-Microsoft Data Access Components - Wikipedia~
https://en.wikipedia.org/wiki/Microsoft_Data_Access_Components

-MDAC/Windows DAC を使用するアプリケーションの開発/動作環境~
https://msdn.microsoft.com/ja-jp/data/gg607260.aspx

-MDACを新バージョンにアップグレードする方法 - @IT~
https://www.atmarkit.co.jp/fwin2k/win2ktips/912mdacupg/mdacupg.html

**SNAC / SQLNCLI [#qe125264]
-双方とも、SQL Server Native Clientの略。

-SQL Server Native Clientは、SQL Server 2005 (9.x) で導入された、~
OLE DB と ODBC の両方で使用されるスタンドアロンのデータ アクセス API
[[ODBC>#b05ab1e4]]、[[OLE DB>#da504ca1]]の両方で使用されるスタンドアロンのデータ アクセス API

***推奨・非推奨 [#oa1f14ff]
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://docs.microsoft.com/ja-jp/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-2014
>SQL Server 2014 は、SQL Server 2012 Native Client をインストールします。SQL Server 2014 Native Client は存在しません。

--https://docs.microsoft.com/ja-jp/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-2016
>SQL Server Native Client (SQLNCLI) は非推奨と新しい開発作業での使用はお勧めしません。

--https://docs.microsoft.com/ja-jp/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-2017
>SQL Server Native Client (SQLNCLI) は非推奨と新しい開発作業での使用はお勧めしません。

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

-参考
--Microsoft SQL Server のドライバーの履歴 - SQL Server | Microsoft Docs~
https://docs.microsoft.com/ja-jp/sql/connect/connect-history
--SNAC lifecycle explained | SQL Server Release Services~
https://blogs.msdn.microsoft.com/sqlreleaseservices/snac-lifecycle-explained/

***ODBC / OLE DB [#h48b2e1f]
SNAC / SQLNCLI の代替として、ODBC / OLE DBドライバの単品利用ができる。
***[[ODBC>#b05ab1e4]] / [[OLE DB>#da504ca1]] [#h48b2e1f]
SNAC / SQLNCLI の代替として、[[ODBC>#b05ab1e4]] / [[OLE DB>#da504ca1]]ドライバの単品利用ができる。

-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 Docs

--Microsoft OLE DB Driver for SQL Server - SQL Server~
https://docs.microsoft.com/ja-jp/sql/connect/oledb/oledb-driver-for-sql-server

--Microsoft ODBC Driver for SQL Server - SQL Server~
https://docs.microsoft.com/ja-jp/sql/connect/odbc/microsoft-odbc-driver-for-sql-server

-ちなみに、[[OLE DBの discon 話は取り消しになったらしい>ADO.NETデータプロバイダ#zd12cac3]]。

**VB6、VBAから使う [#j4a2b1d9]
下記の[[COM系>#k32b2b64]]を利用できる。

**VC++から使う [#va05c737]
-Visual C++ でのデータ アクセス~
https://msdn.microsoft.com/ja-jp/library/vstudio/7wtdsdkh.aspx

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

***COM [#ab7a0e2e]

-ODBC
-[[ODBC>#b05ab1e4]]
--afxdb.h(MFC)
--Provider

-DAO(DAO.DBEngine)
--Jet
--ODBC
--[[Jet>#f99f06b9]]
--[[ODBC>#b05ab1e4]]

-RDO(RDO.)
--ODBC専用
--[[ODBC>#b05ab1e4]]専用

-OLEDB
-[[OLE DB>#da504ca1]]
--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.)
--OLEDB
--[[OLE DB>#da504ca1]]

***C++/CLI [#cc66b524]
[[ADO.NETデータプロバイダ]]を使用可能。

*参考 [#a8892a5f]

**[[ADO.NETデータプロバイダ]] [#k39f5694]
-.NET や .NET Coreでネイティブのデータ・プロバイダがリリースされている。
-.NET Core の データ・プロバイダなどは0依存でリリースされている。
-[[.NET Framework]] や [[.NET Core]]でネイティブのデータ・プロバイダがリリースされている。
-[[.NET Core]] の データ・プロバイダなどは0依存でリリースされている。

**Wikipedia [#z8af2ccb]

***ドライバ [#h419ffe6]
-Open Database Connectivity~
https://ja.wikipedia.org/wiki/Open_Database_Connectivity

-Microsoft Jet Database Engine~
https://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine

***API [#t44485be]
-Data Access Objects~
https://ja.wikipedia.org/wiki/Data_Access_Objects

-Remote Data Objects~
https://ja.wikipedia.org/wiki/Remote_Data_Objects

-OLE DB~
https://ja.wikipedia.org/wiki/OLE_DB

-ActiveX Data Objects~
https://ja.wikipedia.org/wiki/ActiveX_Data_Objects

**CX's Hello, World! [#a63fc4dc]
-ODBC~
http://cx20.main.jp/blog/hello/category/odbc/
-DAO~
http://cx20.main.jp/blog/hello/category/dao/
-OLE DB~
http://cx20.main.jp/blog/hello/category/ole-db/

-ADO~
http://cx20.main.jp/blog/hello/category/ado/
-ACE Database~
http://cx20.main.jp/blog/hello/category/ace-database/
-oo4o~
http://cx20.main.jp/blog/hello/category/oo4o/

----
Tags: [[:データアクセス]]



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS