「[[マイクロソフト系技術情報 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と異なり、プロバイダー・ドライバは接続文字列を使用して切り替え可能。 --専用APIではなく、裏で[[Jet>#f99f06b9]] / [[ODBC>#b05ab1e4]]等の汎用のインタフェースを用いるモノが多い。 -サンプルなどはインターネット上から検索できる。 *詳細 [#m20fc2e6] **ドライバ [#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] -1992年11月に登場し、[[VC++]]、[[VB>Visual Basic]]をサポート。 -主に [[Jet>#f99f06b9]]接続に用いられるが、v3.5から[[ODBC>#b05ab1e4]]接続も可能になった。 -v3.6が最後のバージョンで64bit対応などはされない。 ***RDO [#rf9d78c2] -[[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すれは非接続型データアクセスが可能。 -[[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の略称 -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>#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) で導入された、~ [[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>#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>#b05ab1e4]] --afxdb.h(MFC) --Provider -DAO(DAO.DBEngine) --[[Jet>#f99f06b9]] --[[ODBC>#b05ab1e4]] -RDO(RDO.) --[[ODBC>#b05ab1e4]]専用 -[[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.) --[[OLE DB>#da504ca1]] ***C++/CLI [#cc66b524] [[ADO.NETデータプロバイダ]]を使用可能。 *参考 [#a8892a5f] **[[ADO.NETデータプロバイダ]] [#k39f5694] -[[.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: [[:データアクセス]]