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

StackOverflow https://stackoverflow.com/questions/103167

  •  01-07-2019
  •  | 
  •  

質問

MS Excel のピボットキャッシュに関するヘルプ記事を読んでいたのですが、どういう意味なのか疑問に思いました。 OLE DB および ODBC ソース

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

のために OLE DB ソース, 、CommandTypeプロパティは、commandTextプロパティの値を記述します。

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

短い回答に本当に感謝しています。

役に立ちましたか?

解決

によると アド:ActiveX データ オブジェクト, 、ジェイソン T. による本。Roff、2001 年にオライリー メディアから出版 (素晴らしい図はここにあります)、彼はまさに MOZILLA が言ったことを言っています。

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

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

したがって、OLE DB は ODBC ドライバー層を介して SQL ベースのデータソースと対話するように見えます。

alt text

このイメージが正しいかどうかは 100% わかりません。 私が確信していない 2 つの接続は、ADO C-API を介した ADO.NET と、ODBC を介した SQL ベースのデータ ソースへの OLE DB です。 この図 著者は OLE DB へのアクセスを ODBC 経由で行っていませんが、これは間違いだと思います)。

他のヒント

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

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

私の理解は次のとおりです(非権威):

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

ある時点で、さまざまなデータソース ベンダー (例:Oracle など) は、Microsoft データ コンシューマーとの互換性を望んでおり、自社製品用の OLEDB プロバイダーを開発しましたが、ほとんどの場合、OLEDB は Microsoft のみの標準のままです。今、ほとんどの マイクロソフト データ ソースでは、主に従来の ODBC データ コンシューマとの互換性のために、ODBC と OLEDB の両方へのアクセスが許可されます。また、必要に応じて OLEDB を使用して ODBC データ ソースにアクセスできるようにする、ODBC 用の OLEDB プロバイダー (ラッパー) も存在します。

機能の点では、OLEDB は ODBC よりも大幅に豊富ですが、1 つのリングでルールをすべて実現する症候群 (過度に汎用的、過度に複雑、意見がまとまらない) に悩まされています。

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

Microsoft バブルの内部では、OLEDB は段階的に廃止され、そのデータ ソースのネイティブ トランスポート層が何であれ (例:MS SQL Server の TDS)。

ODBC と OLE DB は、競合する 2 つのデータ アクセス テクノロジです。特に SQL Server に関しては、時期は異なりますが、Microsoft は両方を将来の望ましい方向として推進してきました。

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 DB Provider for ODBC) と呼ばれます。

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

SQL Server は (1) Microsoft 製であり、(2) Microsoft データベース プラットフォームには、ODBC と OLE DB の両方が自然に適合します。

ODBC

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

OLE DB

これは Microsoft 独自のテクノロジであり、付随する ADO レイヤとともに、2002 年から 2005 年頃まで強力に推進されていました。彼らは明らかに、それがデータ アクセス テクノロジとして選ばれることを期待していました。(彼らは、ADO を Access 2002/2003 のデータにアクセスするためのデフォルトの方法にさえしました。) しかし、最終的には、次のようなさまざまな理由により、これが実現しないことが明らかになりました。

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

こういった理由から その他, 、マイクロソフトは実際に データ アクセス テクノロジとしての 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 リリースは積極的にサポートされると述べています。 ない OLE DBをサポートします!

この発表は抗議の嵐を引き起こした。人々は、MS が何年もかけて取り組んできたテクノロジーをなぜ突然非推奨にするのか理解に苦しみました。さらに、SQL Server に密接にリンクされた MS 作成のアプリケーションである SSAS/SSRS および SSIS は、完全または部分的に OLE DB に依存していました。さらにもう 1 つの不満は、OLE DB には ODBC に移植するのが不可能に見える特定の望ましい機能があるということでした。結局のところ、OLE DB には多くの優れた点がありました。

2017 年 10 月、マイクロソフトは折れて、 正式に非推奨ではない OLE DB. 。彼らは、Native Client 11 の既存の機能セットを備え、マルチサブネット フェールオーバーと TLS 1.2 サポートも導入する新しいドライバー (MSOLEDBSQL) が間もなく登場すると発表しました。このドライバーは 2018 年 3 月にリリースされました。

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

両方の詳細については、Wikipedia で読むことができます。

  1. OLE DB
  2. ODBC

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

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

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

Microsoft の Web サイトでは、ネイティブ OLEDB プロバイダーが SQL サーバーに直接適用され、ODBC 用 OLEDB Provider と呼ばれる別の OLEDB プロバイダーが Sysbase、DB2 などの他のデータベースにアクセスすることが示されています。OLEDB プロバイダーにはさまざまな種類のコンポーネントがあります。見る MSDN の分散クエリ 多くのための。

• 2011 年 8 月:マイクロソフト 廃止される OLE DB (Microsoft はネイティブ リレーショナル データ アクセスのために ODBC と連携しています)

• 2017 年 10 月:マイクロソフト 非推奨を解除する OLE DB (SQL Server 用 OLE DB ドライバーの新しいリリースの発表)

ODBC はリレーショナル データベースでのみ機能し、Ms Excel ファイルなどの非リレーショナル データベースでは機能しません。Olebd が何でもできる場所。

M$ が OLEDB を発明した理由を知るには、OLEDB と ODBC を比較することはできません。代わりに、OLEDB を DAO、RDO、または ADO と比較する必要があります。後者は主に SQL に依存しています。ただし、OLEDB は COM に依存しています。しかし、ODBC はすでに何年も前から存在しているため、これを解決する OLEDB-ODBC ブリッジがあります。M$ が OLEDB を発明するとき、大きな全体像があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top