- 追加された行はこの色です。
- 削除された行はこの色です。
Open棟梁Project - マイクロソフト系技術情報 Wiki
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>データアクセスのいろいろ]]
-戻る
--[[ADO.NET]]
--[[データプロバイダ]]
* 目次 [#je117dc1]
#contents
*概要 [#p227ab20]
以下、ADO.NETデータプロバイダの種類を列挙する。
以下、専用API型のADO.NETデータプロバイダの種類を列挙する。
*汎用データ プロバイダ [#p63e7daa]
-OLEDB.NETデータ プロバイダ
-ODBC.NETデータ プロバイダ
*汎用 .NETデータ プロバイダ [#p63e7daa]
-APIレイヤのみの提供。
-下位のドライバを選択できる。
-選択したドライバによって動きが変わる。
-.NET同梱のため、別途ラインタイムのインストールが不要。
--APIレイヤのみの提供。
--下位のドライバを選択できる。
--選択したドライバによって動きが変わる。
--.NET同梱のため、別途ラインタイムのインストールが不要。
**OLE DB [#ha886c89]
*DBMS固有データ プロバイダ [#kaf99732]
***System.Data.OleDb [#c6dd7162]
-.NET同梱のため、別途ラインタイムのインストールが不要。
-下位のOLEドライバを選択できる。
***参考 [#q83b27bd]
-OLE DB の概要~
https://msdn.microsoft.com/ja-jp/library/Dd148548.aspx
**ODBC [#gf94818e]
***System.Data.Odbc [#y0beb592]
-.NET同梱のため、別途ラインタイムのインストールが不要。
-下位のODBCドライバを選択できる。
***参考 [#jd55ecdc]
-ODBC の概要~
https://msdn.microsoft.com/ja-jp/library/Cc948698.aspx
-ODBC の基礎~
https://msdn.microsoft.com/ja-jp/library/thzzea08.aspx
**OLE DBとODBCの選択 [#zd12cac3]
***サマリ [#pb55ee79]
-結局、SQL Server 2014でまだ廃止されていないようですが、~
Accessなどの他のマイクロソフト製品でOLE DBの~
サポート打ち切りは始まってきているようです。
-...と思ったら、2018 年に~
「OLE DB の非推奨が取り消し」となり、~
新バージョンがリリースされました。
***参考 [#m0ddd73a]
-Microsoft SQLNCli team blog
--Microsoft is Aligning with ODBC for Native Relational Data Access~
https://blogs.msdn.microsoft.com/sqlnativeclient/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access/
--Announcing the new release of OLE DB Driver for SQL Server~
https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/
*DBMS固有 .NETデータ プロバイダ [#kaf99732]
**SQL Server [#z6a38476]
-SQL Server用.NETデータ プロバイダ(System.Data.SqlClient)
--.NET同梱のため、別途ラインタイムのインストールが不要。
***System.Data.SqlClient [#pf5917d3]
.NET同梱のため、別途ラインタイムのインストールが不要。
***参考 [#ee39ce57]
-System.Data.SqlClient 名前空間 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.sqlclient
**Oracle [#e86b81c5]
***Oracle用.NETデータ プロバイダ(System.Data.OracleClient) [#xb02910f]
***System.Data.OracleClient [#xb02910f]
-.NET同梱のため、別途ラインタイムのインストールが不要。
-2C/Sなどでは、別途インストールのODP.NETと比べメリットあり。
-2C/Sなどでは、別途インストールのODP.NETと比べ、メリットがあった。
-ただし、.NET 4.0から非推奨となっているので注意が必要。
--System.Data.OracleClientが.NET 4.0から~
非推奨になる (Oracle, ODP.NET, ADO.NET) - いろいろ備忘録日記~
http://devlights.hatenablog.com/entry/20090629/p1
--マイクロソフト製OracleClientが非推奨に~
http://www.infoq.com/jp/news/2009/06/oracleclient_deprecated
>マイクロソフトは、System.Data.OracleClientが.NET 4.0以降は非推奨になると発表した。~
この名前空間に含まれるクラスは、.NET 4.0では非推奨マークが付けられ、将来のバージョンでは削除される。
***ODP.NETデータ プロバイダ [#j939b851]
-配列バインドをサポート
-フェッチ・サイズをサポート
-最近マネージドのOracleクライアント不要のODP.NETがリリースされたようです。
-Oracle Instant Client対応
--Oracle Instant Client~
http://www.oracle.com/technetwork/jp/database/features/instant-client/index-352321-ja.html
---Instant Client Downloads~
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html?ssSourceSiteId=otnjp
--Oracle Client(ODP.NET)を手っ取り早くインストールする方法について - 素敵なおひげですね~
***ODP.NET Managed Driver [#e9de2377]
最近マネージドのOracleクライアント不要のODP.NETがリリースされた(Instant Clientよりさらに楽)。~
ODP.NET Managed DriverはOracle 12cになって登場したフルマネージドのODP.NETドライバ。~
ODAC 12cはOracle 12cで追加されたコンポーネントだが、Oracle 10gまでサポートしている。
-素敵なおひげですね
--Oracle Client(ODP.NET)を手っ取り早くインストールする方法について~
http://stknohg.hatenablog.jp/entry/2014/10/24/074303
>ODP.NET Managed DriverはOracle 12cになって登場したフルマネージドのODP.NETドライバです。
--ODAC 12c Release 3 Installation Instructions~
--ODP.NET Managed Driver(管理対象ドライバ)についての私的まとめ~
http://stknohg.hatenablog.jp/entry/2014/11/02/173039
-ODAC 12c Release 3 Installation Instructions~
http://www.oracle.com/technetwork/topics/dotnet/downloads/install121021-2389380.html
---ODP.NET, Managed Driver requires .NET Framework 4 or later up to .NET Framework 4.5.2
---ODP.NET, Unmanaged Driver requires .NET Framework 3.5 SP 1 or later up to .NET Framework 4.5.2
**DB2 [#s07d659e]
-DB2.NETデータ プロバイダ
--ODP.NET, Managed Driver requires .NET Framework 4 or later up to .NET Framework 4.5.2
**HiRDB [#aa9b1539]
***HiRDB用.NETデータ プロバイダ(pddndp20.dll) [#j4ee843d]
--配列バインドをサポート
--型指定、サイズ指定が必須
--ODP.NET, Unmanaged Driver requires .NET Framework 3.5 SP 1 or later up to .NET Framework 4.5.2
-古いODP.NETは、
--[[Oracleクライアントとのバージョン不一致や32/64bit不一致>WOW64#x8197aae]]~
などで動かないなどのトラブルがよく起きるためサポートが面倒。
--なるべく早く、ODP.NET, Managed Driverに乗り換えたほうが良い。
***参考 [#va8514cf]
-[[Oracle11gXE + ODP.NET Managed Driver>#f006f0be]]
-OracleのODP.NETのフェッチサイズと配列バインド~
が強力だという話。 - OSSコンソーシアム~
https://www.osscons.jp/jo1pgfhtx-537/#_537
**PostgreSQL [#dad19e08]
***Npgsql ADO.NET Data Provider for PostgreSQL [#h5093e53]
Postgresqlで主流の.NETデータ・プロバイダ
***dotConnect for PostgreSQL [#b80f40c1]
一応、[[Npgsql>#h5093e53]]以外の選択肢(実績は聞いたこと無し)。
***参考 [#r76ed033]
-Npgsql
--[[PostgreSQL + NpgSql>#x9f678bc]]
--Npgsql~
http://www.npgsql.org/
--Postgresql のための Npgsql .Net データプロバイダ : プロジェクトホームページ~
http://www.postgresql.jp/document/NPGSQL/index.html
--.NETライブラリ「Npgsql」によるPostgreSQLの活用 - Build Insider~
http://www.buildinsider.net/small/npgsql/01
-dotConnect
--dotConnect for PostgreSQL~
ADO.NET Provider for PostgreSQL with Entity Framework~
LINQ to PostgreSQL and NHibernate Support~
https://www.devart.com/dotconnect/postgresql/
**MySQL [#k23406ba]
***MySQL用.NETデータ プロバイダ(MySQL Connector/NET) [#zdb6aff1]
***MySQL Connector/NET [#zdb6aff1]
-ライセンスに注意が必要(GPL)。
**PostgreSQL [#dad19e08]
-PostgreSQL用.NETデータ プロバイダ(Npgsql .Net Data Provider for Postgresql)
--DBサーバのライセンスを整理する うめつる開発室~
http://blog.ume108.mobi/?p=5649
---MySQLのライセンスってどうなってるの
>では、Oracle の .NET ライブラリConnector/Netはどうでしょうか?微妙です。~
開発する本体プログラムの一部として密接に関係付けられた状態でリンクされるわけですから。~
開発したソフトウェアを GPLにして公開するのなら問題はないけれど、~
そうでない製品を作るのならConnector/Net を使わないで作るか、~
さもなくば MySQL の商用ライセンスを買うか、MySQL を諦めるかということになります。
*その他 [#b3b449f1]
--GPLでは頒布に問題があるようです。
---受託開発やSaaSでは問題無さそうです。
---パッケージ的な頒布は問題になりそうです。
---GPLについては[[コチラ>#ac4107c2]]を参照。
**ADO [#jc8baf0c]
***参考 [#p69284e0]
[[MySQL + Connector/NET]]
RDOやDAOの後継、ADO.NETの前任
**DB2 [#s07d659e]
MDACとともにインストールされる[[COM]]インターフェイスのデータプロバイダ。
***IBM Data Server Provider for .NET [#m120bf15]
純正、DB2 .NETデータ プロバイダ
-[[COM]]インターフェイスを持つため、~
VB6、VBA、VBScriptなどからデータアクセスする場合に使用する。
***dotConnect for DB2 [#sf2a5ee7]
dotConnect系(実績は聞いたこと無し)
-接続型データアクセスが既定と考えられているAPI設計だが、~
取得したレコードセットをCloseすれは非接続型データアクセスが可能。
**HiRDB [#aa9b1539]
-ADO.NETと異なり、プロバイダー・ドライバは接続文字列を使用して切り替え可能。
***pddndp20.dll [#j4ee843d]
純正
-配列バインドをサポート
-型指定、サイズ指定が必須
--[FILE] ODBC、OLEDB、ADO、RDS での接続文字列の~
使用方法を説明するための MDACCON.EXE ファイル~
https://support.microsoft.com/kb/193332/JA?wa=wsignin1.0
***参考、3rd [#c76de2e1]
情報なし。
-サンプルなどはインターネット上から検索できる。
*その他 [#gdc22972]
***参考 [#j94eab1b]
**GPLライセンス [#ac4107c2]
[[コチラ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?OSS%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9#a090cc67]]に移動しました。
-ADO Version 2.6~
http://msdn.microsoft.com/ja-jp/library/cc407851.aspx
**コネクション・プーリング [#f61acf4f]
-ActiveX Data Objects - Wikipedia~
http://ja.wikipedia.org/wiki/ActiveX_Data_Objects
***概要 [#gc5c34c3]
コネクション・プーリング(接続プール)は、
**OO4O(Oracle Objects for OLE) [#n1995e2c]
-接続を再利用することで性能向上を図る仕組み。
-この機能は、ADO.NETデータプロバイダが提供する。
-通常、既定で有効になっている。接続文字列などでconfigする。
-[[ベース クライアント セキュリティ モデルでは利用不可>リソース アクセス ストラテジ#xbea5cc0]]。
Oracle社のリリースしたADOに対抗するカスタムのデータプロバイダ。
***参考 [#xc0d3686]
-[[SQL Server のコネクションとセッション]]
-[[COM]]インターフェイスを持つため、~
VB6、VBA、VBScriptなどからデータアクセスする場合に使用する。
-接続プール~
https://msdn.microsoft.com/ja-jp/library/bb399543.aspx
-OO4Oは[[64bit対応]]がされていない。
-ADO.NET入門記-004 - いろいろ備忘録日記~
(コネクションプーリングをする場合としない場合の速度差)~
http://devlights.hatenablog.com/entry/20070812/p4
--OO4Oとは~
http://www.doppo1.net/oracle/middle/oo4o.html
-門外不出のOracle現場ワザ 第5章~
DBアクセスの空白地帯 コネクションプーリングを極める~
http://www.oracle.com/technetwork/jp/articles/chapter5-2-085301-ja.html
-Oracle11g(11.2)が、OO4Oをサポートする最後のバージョン
*参考 [#t5954b91]
--従って、今後、新規のOO4O採用は推奨されない。~
(VB6、VBA、VBScript等からはADOを使用する)。
**[[.NET Core]]のデータプロバイダ [#a51ecd81]
「.NET同梱」と書いてあるモノも、~
[[.NET Core]]に関しては、NuGetから取得する。
-サンプルなどはインターネット上から検索できる。
**[[ADO.NET以外のデータプロバイダ]] [#b3b449f1]
昔の[[VB6、VBA、VBScript>Visual Basic]]などからデータアクセスする際に使用するデータプロバイダ
-OO4OからADO(ADO.NET)への移行は~
オブジェクトモデル、APIが異なるため困難。
**CX's Hello, World! [#ac462f0e]
-ADO.NET~
http://cx20.main.jp/blog/hello/category/ado-net/
--従って、コンバージョンではなく再構築になる。
**構築 [#dc6e443a]
***参考 [#j5db0af1]
***[[Oracle11gXE + ODP.NET Managed Driver]] [#f006f0be]
-Oracle Objects for OLEの紹介~
https://docs.oracle.com/cd/E16338_01/win.112/b58887/intro.htm
***[[PostgreSQL + NpgSql]] [#x9f678bc]
-OTN Japan - 意外と簡単! .NETでOracle:oo4oからODP.NET移行編~
http://otndnld.oracle.co.jp/easy/dotnet/oo4otoodp/#8
----
Tags: [[:データアクセス]], [[:ADO.NET]]