web-dev-qa-db-ja.com

OLE DBとODBCデータソースの違いは何ですか?

私はpivotcacheに関するMS Excelのヘルプ記事を読んでいて、OLE DBとODBC sourcesの意味を知りたい

...主に以前のバージョンのMicrosoft Excelとの互換性のために存在するSQLプロパティの代わりにCommandTextプロパティを使用する必要があります。両方のプロパティを使用する場合、CommandTextプロパティの値が優先されます。

OLE DBソースの場合、CommandTypeプロパティはCommandTextプロパティの値を記述します。

ODBCソースの場合、CommandTextプロパティはSQLプロパティとまったく同じように機能し、プロパティを設定するとデータが更新されます...

あなたの短い答えに本当に感謝します。

160
Martin08

ADO:ActiveX Data Objects、Jason T. Roff著、2001年にO'Reilly Mediaから出版 (ここに優れた図)によると、彼はモジラが言ったことを正確に言います。

(その本の7ページから直接)

  • ODBCは、リレーショナルデータベースへのアクセスのみを提供します
  • OLE DBは次の機能を提供します
    • 形式や場所に関係なくデータにアクセス
  • ODBCデータソースおよびODBCドライバーへのフルアクセス

したがって、OLE DBはODBCドライバーレイヤーを介してSQLベースのデータソースとやり取りするようです。

alt text

この画像が正しいかどうかは100%確信できません。不明な2つの接続は、ADO.NETからADO C-api、およびOLE SQLベースのデータソースへのODBCを介したDB( この図 で、著者はODBCを介したOLE DBのアクセスを設定しないため、これは間違いだと思います) )。

138
bobobobo

ODBC:-リレーショナルデータベースのみ(SQL Server、Oracleなど)

OLE DB:-リレーショナルデータベースと非リレーショナルデータベースの両方。 (Oracle、Sql-Server、Excel、生ファイルなど)

54
MOZILLA

私の理解は次のとおりです(権限がありません)。

ODBCは、ほとんどのソフトウェアベンダーがサポートするテクノロジーに依存しないオープンスタンダードです。 OLEDBはテクノロジー固有 MicrosoftのCOM時代のAPI(COMは.NET以前のコンポーネントおよび相互運用性テクノロジーでした)

ある時点で、Microsoftデータコンシューマーと互換性のあるさまざまなデータソースベンダー(Oracleなど)が製品のOLEDBプロバイダーを開発しましたが、ほとんどの場合、OLEDBはMicrosoftのみの標準のままです。現在、ほとんどのMicrosoftデータソースは、主にレガシーODBCデータコンシューマーとの互換性のために、ODBCとOLEDBの両方のアクセスを許可しています。また、ODBC用のOLEDBプロバイダー(ラッパー)があり、OLEDBを使用してODBCデータソースにアクセスできます。

機能の点では、OLEDBはODBCよりも大幅に豊富ですが、1リングツールールゼムオールシンドローム(過度に一般的、複雑すぎ、非意見)に悩まされています。

Microsoft以外の世界では、ODBCベースのデータプロバイダーとクライアントが広く使用されており、どこにも行きません。

Microsoftバブルの内部では、OLEDBは、そのデータソースのネイティブトランスポートレイヤー(たとえば、MS SQL ServerのTDS)の上に構築されるネイティブ.NET APIを支持して段階的に廃止されています。

41
zvolkov

ODBCとOLE DBは、競合する2つのデータアクセステクノロジーです。特にSQL Serverに関しては、マイクロソフトは両方を推奨される将来の方向として宣伝していますが、時期は異なります。

ODBC

ODBCは、テーブルのようなデータにアクセスするための業界全体の標準インターフェイスです。主にデータベース用に開発され、レコードのコレクションにデータを表示します。各レコードはフィールドのコレクションにグループ化されます。各フィールドには、含まれるデータのタイプに適した独自のデータタイプがあります。各データベースベンダー(Microsoft、Oracle、Postgresなど)は、データベースにODBCドライバーを提供します。

また、オブジェクト用のODBCドライバーもありますが、これらはデータベーステーブルではありませんが、同じ方法でデータにアクセスすると便利なほど十分に類似しています。例は、スプレッドシート、CSVファイル、および円柱レポートです。

OLE DB

OLE DBは、データにアクセスするためのMicrosoftテクノロジーです。 ODBCとは異なり、メールメッセージ、Webページ、Word文書、ファイルディレクトリなど、テーブルのようなデータとテーブルのようなデータの両方を含みます。ただし、オブジェクト指向ではなくプロシージャ指向であり、データソースへのアクセスを開発するためのかなり難しいインターフェイスと見なされています。これを克服するために、ADOはOLE DBの上にあるオブジェクト指向のレイヤーであり、よりシンプルで高レベルの(まだ非常に強力な)作業方法を提供するように設計されましたそれ。 ADOの大きな利点は、すべてのデータソースタイプに適用されるプロパティにアクセスするのと同じくらい簡単に、特定のタイプのデータソースに固有のプロパティを操作できることです。不十分な最低公約数に制限されることはありません。

すべてのデータベースにはODBCドライバーがありますが、すべてにOLE DBドライバーがあるわけではありません。ただし、OLEとODBCの間には、OLE DBのような方法でアクセスする場合に使用できるインターフェイスがあります。このインターフェイスはMSDASQL(Microsoft OLE ODBC for DBプロバイダー)と呼ばれます。

SQL Serverデータアクセステクノロジー

SQL Serverは(1)Microsoftによって作成され、(2)theMicrosoftデータベースプラットフォームであるため、ODBCとOLE DBは自然に適合します。

ODBC

他のすべてのデータベースプラットフォームにはODBCインターフェイスがあったため、Microsoftは明らかにSQL Serverにインターフェイスを提供する必要がありました。これに加えて、Microsoft Accessの元のデフォルトテクノロジーであるDAOは、すべての外部データソースと通信する標準的な方法としてODBCを使用します。これにより、ODBCインターフェイスが非常に簡単になりました。 SQL Server 2000と共にリリースされたSQL Server用のバージョン6 ODBCドライバーはまだ存在します。後続のリリースで登場した新しいデータ型、接続テクノロジ、暗号化、HA/DRなどを処理するために、更新されたバージョンがリリースされました。 2018年9月7日の最新リリースは、2018年3月23日にリリースされたv13.1「SQL Server用のODBCドライバー」です。

OLE DB

これは、Microsoft独自のテクノロジーであり、2002年から2005年頃にかけて、ADOレイヤーとともに強力に推進されていました。彼らは明らかに、それが最適なデータアクセステクノロジーになることを望んでいました。 (ADOをAccess 2002/2003のデータにアクセスするためのデフォルトの方法にしました。)しかし、次のようないくつかの理由でこれが起こらないことが明らかになりました。

  1. 世界はMicrosoftテクノロジーに変換するつもりはなく、ODBCから離れていました。
  2. DAO/ODBCはADO/OLE DBよりも高速で、MS Accessに完全に統合されていたため、自然死することはありませんでした。
  3. Microsoftが開発中の新しいテクノロジー、特にADO.NETは、ODBCと直接通信することもできます。 ADO.NETはOLE DBとも直接通信できます(したがって、ADO_を背水に残します)が、(ADOとは異なり)それだけに依存していませんでした。

これらの理由により、 およびその他 、Microsoft データアクセステクノロジーとして非推奨のOLE DB v11以降のSQL Serverリリース(SQL Server 2012)。この時点の数年前、彼らはODBCとOLE DBテクノロジーの両方をサポートするSQL Server Native Clientを作成および更新していました。しかし、2012年後半に、彼らはSQL ServerのネイティブリレーショナルデータアクセスのためにODBCと連携することを発表し、他のすべての人にも同じことをするよう奨励しました。さらに、v11/SQL Server 2012以降のSQL Serverリリースでは、積極的にnotがOLE DBをサポートすると述べています。

この発表は抗議の嵐を引き起こしました。人々は、MSが何年もかけて彼らにコミットさせるために費やしてきたテクノロジーを突然非推奨にする理由を理解するのに途方に暮れていました。さらに、SSAS/SSRSとSSISは、SQL Serverに密接にリンクされたMSで作成されたアプリケーションであり、OLE DBに全面的または部分的に依存していました。さらに別の不満は、OLE DBにはODBCに移植できないと思われる特定の望ましい機能があるということでした。結局、OLE DBには多くの良い点がありました。

2017年10月、Microsoftは寛容になり、 公式には非推奨のOLE DB になりました。彼らは、Native Client 11の既存の機能セットを備え、マルチサブネットフェールオーバーとTLS 1.2サポートも導入する新しいドライバー(MSOLEDBSQL)の差し迫った発表を発表しました。ドライバーは2018年3月にリリースされました。

16
marktwo

非常に基本的なレベルでは、これらは異なるデータソース(つまり、データベース)のための異なるAPIにすぎません。 OLE DBはより新しく、ほぼ間違いなく優れています。

ウィキペディアで両方について詳しく読むことができます:

  1. OLE DB
  2. ODBC

つまりODBCドライバーまたはOLE DBドライバーを使用して同じデータベースに接続できます。これらの場合のデータベースの動作の違いは、あなたの本が言及していることです。

6
Ilya Kochetov

どちらもデータプロバイダー(コードがデータソースと通信するために使用するAPI)です。 1998年に導入されたOledbは、ODBC(1992年に導入)の代替となることを目的としていました。

5
Arcturus

すべての詳細はわかりませんが、OLE DBとODBCは、すべてに対処することなくさまざまなタイプのデータベースに接続するために使用できる2つのAPIですそれぞれの実装固有の詳細。 OLE DBに関するWikipediaの記事 によると、OLE DBはMicrosoftのODBCの後継であり、_では実行できない機能を提供しますODBCデータベースソースとしてスプレッドシートにアクセスするなど。

3
user10340

MicrosoftのWebサイトでは、ネイティブOLEDBプロバイダーがSQLサーバーに直接適用され、ODBCのOLEDBプロバイダーと呼ばれる別のOLEDBプロバイダーがSysbase、DB2などの他のデータベースにアクセスすることを示しています。 OLEDBプロバイダー。詳細については、 MSDNの分散クエリ を参照してください。

2
FebWind
2
tibx

ODBCはリレーショナルデータベースでのみ機能し、MS Excelファイルなどの非リレーショナルデータベースでは機能しません。オレブドがすべてを行える場所。

0
Md Shahriar