「[[マイクロソフト系技術情報 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データプロバイダの種類を列挙する。

*汎用 .NETデータ プロバイダ [#p63e7daa]
-APIレイヤのみの提供。
-下位のドライバを選択できる。
-選択したドライバによって動きが変わる。
-.NET同梱のため、別途ラインタイムのインストールが不要。

**OLE DB [#ha886c89]
-OLE DB の概要~
https://msdn.microsoft.com/ja-jp/library/Dd148548.aspx

***System.Data.OleDb [#c6dd7162]
-.NET同梱のため、別途ラインタイムのインストールが不要。

**ODBC [#gf94818e]
-ODBC の概要~
https://msdn.microsoft.com/ja-jp/library/Cc948698.aspx
-ODBC の基礎~
https://msdn.microsoft.com/ja-jp/library/thzzea08.aspx

***System.Data.Odbc [#y0beb592]
-.NET同梱のため、別途ラインタイムのインストールが不要。

**OLE DBとODBCの選択 [#zd12cac3]
-結局、SQL Server 2014でまだ廃止されていないようですが、~
Accessなどの他のマイクロソフト製品でOLE DBのサポート打ち切りは始まってきているようです。

-...と思ったら、2018 年に [[OLE DB の非推奨が取り消し>https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/]]となり、新バージョンがリリースされました。

-参考
--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]
***System.Data.SqlClient [#pf5917d3]
-.NET同梱のため、別途ラインタイムのインストールが不要。

**Oracle [#e86b81c5]
***System.Data.OracleClient [#xb02910f]
-.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 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

***ODP.NET Managed Driver [#e9de2377]
最近マネージドのOracleクライアント不要のODP.NETがリリースされた。~
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(管理対象ドライバ)についての私的まとめ~
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

-古いODP.NETは、
--[[Oracleクライアントとのバージョン不一致や32/64bit不一致>WOW64#x8197aae]]~
などで動かないなどのトラブルがよく起きるためサポートが面倒。
--なるべく早く、Oracle Instant ClientやODP.NET, Managed Driverに乗り換えたほうが良い。

-参考
--[[Oracle11gXE + ODP.NET Managed Driver]]
--OracleのODP.NETのフェッチサイズと配列バインドが強力だという話。 - OSSコンソーシアム~
https://www.osscons.jp/jo1pgfhtx-537/#_537

**PostgreSQL [#dad19e08]

***Npgsql .Net Data Provider for Postgresql [#h5093e53]

-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

-参考 : [[PostgreSQL + NpgSql]]

***dotConnect for PostgreSQL [#b80f40c1]
一応、[[Npgsql>#h5093e53]]以外の選択肢。

-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 Connector/NET [#zdb6aff1]
ライセンスに注意が必要(GPL)。

-DBサーバのライセンスを整理する  うめつる開発室~
http://blog.ume108.mobi/?p=5649
--MySQLのライセンスってどうなってるの
>では、Oracle の .NET ライブラリConnector/Netはどうでしょうか?微妙です。~
開発する本体プログラムの一部として密接に関係付けられた状態でリンクされるわけですから。~
開発したソフトウェアを GPLにして公開するのなら問題はないけれど、~
そうでない製品を作るのならConnector/Net を使わないで作るか、~
さもなくば MySQL の商用ライセンスを買うか、MySQL を諦めるかということになります。

-GPLでは頒布に問題があるようです。
--受託開発やSaaSでは問題無さそうです。
--パッケージ的な頒布は問題になりそうです。
--GPLについては[[コチラ>#ac4107c2]]を参照。

**DB2 [#s07d659e]
***DB2.NETデータ プロバイダ [#m120bf15]

**HiRDB [#aa9b1539]
***pddndp20.dll [#j4ee843d]
-配列バインドをサポート
-型指定、サイズ指定が必須

*[[.NET Core]]のデータプロバイダ [#a51ecd81]
「.NET同梱」と書いてあるモノも、~
[[.NET Core]]に関しては、NuGetから取得する。

*参考 [#t5954b91]

**構築 [#dc6e443a]

***[[Oracle11gXE + ODP.NET Managed Driver]] [#f006f0be]

***[[PostgreSQL + NpgSql]] [#x9f678bc]

**GPLについて。 [#ac4107c2]

***GNU General Public License [#eedd19ef]
-GNU General Public License - Wikipedia~
https://ja.wikipedia.org/wiki/GNU_General_Public_License

-GNUプロジェクト - フリーソフトウェアファウンデーション
--GNU一般公衆ライセンス v3.0~
http://www.gnu.org/licenses/gpl.html
--GNU一般公衆ライセンス v2.0~
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
--GNU一般公衆ライセンス v1.0~
http://www.gnu.org/licenses/old-licenses/gpl-1.0.html

***ケース [#k905c0b2]
-オープンソースとGPL,ASP 著作権契約書の駒沢公園行政書士事務所~
http://ootsuka-houmu.com/service/gpl.html~
>ASPとGPL:SPサービスが配布にあたらないことが明らかとなりました(GPLv3)。

-GPLにおいて納品は頒布ではない? - uehaj's blog~
http://uehaj.hatenablog.com/entry/20100710/1278772393~
>IPAからダウンロードできる「GNU GPLv3 逐条解説書」には
--GPLv2では、納品は頒布に相当しないとの解釈がFAQで公開されている。
--GPLv3では、納品はコンベイ*1にあたるものの、GPLv3の条件は課されない。

**コネクション・プーリング [#f61acf4f]

***概要 [#gc5c34c3]
コネクション・プーリング(接続プール)は、

-接続を再利用することで性能向上を図る仕組み。
-この機能は、ADO.NETデータプロバイダが提供する。
-通常、既定で有効になっている。接続文字列などでconfigする。
-[[ベース クライアント セキュリティ モデルでは利用不可>リソース アクセス ストラテジ#xbea5cc0]]。

***参考 [#xc0d3686]
-[[SQL Server のコネクションとセッション]]

-接続プール~
https://msdn.microsoft.com/ja-jp/library/bb399543.aspx
-ADO.NET入門記-004 - いろいろ備忘録日記~
(コネクションプーリングをする場合としない場合の速度差)~
http://devlights.hatenablog.com/entry/20070812/p4
-門外不出のOracle現場ワザ 第5章~
DBアクセスの空白地帯 コネクションプーリングを極める~
http://www.oracle.com/technetwork/jp/articles/chapter5-2-085301-ja.html

**[[ADO.NET以外のデータプロバイダ]] [#b3b449f1]

----
Tags: [[:データアクセス]], [[:ADO.NET]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS