В чем разница между источниками данных OLE DB и ODBC? - PullRequest
160 голосов
/ 19 сентября 2008

Я читал справочную статью MS Excel о сводной кэш-памяти и удивлялся, что они имеют в виду под источниками OLE DB и ODBC

... Вы должны использовать CommandText свойство вместо свойства SQL, который сейчас существует в основном для совместимость с более ранними версиями Майкрософт Эксель. Если вы используете оба свойства, свойство CommandText значение имеет приоритет.

Для источников OLE DB , CommandType Свойство описывает значение Свойство CommandText.

Для источников ODBC , CommandText функции собственности точно так же, как Свойство SQL и настройка свойства вызывает обновление данных ...

Я очень ценю ваши короткие ответы.

Ответы [ 11 ]

138 голосов
/ 13 июля 2009

Согласно ADO: ActiveX Data Objects , книге Джейсона Т. Роффа, опубликованной O'Reilly Media в 2001 (отличная диаграмма здесь), он точно говорит, что такое MOZILLA сказал.

(прямо со страницы 7 этой книги)

  • ODBC предоставляет доступ только к реляционным базам данных
  • OLE DB предоставляет следующие функции
    • Доступ к данным независимо от их формата или местоположения
  • Полный доступ к источникам данных ODBC и драйверам ODBC

Таким образом, может показаться, что OLE DB взаимодействует с источниками данных на основе SQL через уровень драйвера ODBC.

alt text

Я не уверен на 100%, что это изображение правильное. Два соединения, в которых я не уверен, это ADO.NET через ADO C-api и OLE DB через ODBC с данными на основе SQL источник (потому что в этой диаграмме автор не помещает доступ OLE DB через ODBC, что я считаю ошибкой).

54 голосов
/ 24 апреля 2009

ODBC: - Только для реляционных баз данных (Sql Server, Oracle и т. Д.)

OLE DB: - Для реляционных и нереляционных баз данных. (Oracle, Sql-Server, Excel, необработанные файлы и т. Д.)

41 голосов
/ 13 июля 2009

Вот мое понимание (не авторитетно):

ODBC - это независимый от технологии открытый стандарт, поддерживаемый большинством поставщиков программного обеспечения. OLEDB - это специфичный для технологии API-интерфейс Microsoft от COM-эры (COM был компонентом и технологией взаимодействия до .NET)

В какой-то момент различные поставщики данных (например, Oracle и т. Д.), Желая быть совместимыми с потребителями данных Microsoft, разработали поставщиков OLEDB для своих продуктов, но по большей части OLEDB остается стандартом только для Microsoft. Теперь большинство Microsoft источников данных обеспечивают доступ как к ODBC, так и к OLEDB, в основном для совместимости с традиционными потребителями данных ODBC. Кроме того, существует поставщик OLEDB (оболочка) для ODBC, который позволяет использовать OLEDB для доступа к источникам данных ODBC, если он того пожелает.

С точки зрения возможностей OLEDB существенно богаче, чем ODBC, но страдает синдромом «одно кольцо для правила их всех» (чрезмерно общий, чрезмерно сложный, бездумный).

В мире, отличном от Microsoft, поставщики данных и клиенты на основе ODBC широко используются и никуда не денутся.

Внутри Microsoft пузыря OLEDB постепенно сокращается в пользу собственных .NET API, построенных поверх того, что является собственным транспортным уровнем для этого источника данных (например, TDS для MS SQL Server).

14 голосов
/ 13 июля 2018

ODBC и OLE DB - две конкурирующие технологии доступа к данным. В частности, что касается SQL Server, Microsoft выдвинула их обоих в качестве предпочтительного направления на будущее, хотя и в разное время.

ODBC

ODBC - это общеотраслевой стандартный интерфейс для доступа к табличным данным. Первоначально он был разработан для баз данных и представляет данные в коллекциях записей, каждая из которых сгруппирована в коллекцию полей. Каждое поле имеет свой собственный тип данных, соответствующий типу данных, которые оно содержит. Каждый поставщик базы данных (Microsoft, Oracle, Postgres,…) предоставляет драйвер ODBC для своей базы данных.

Существуют также драйверы ODBC для объектов, которые, хотя и не являются таблицами базы данных, достаточно похожи, что полезно для доступа к данным таким же образом. Примерами являются электронные таблицы, файлы CSV и столбчатые отчеты.

OLE DB

OLE DB - это технология Microsoft для доступа к данным. В отличие от ODBC он включает в себя как табличные, так и не подобные таблицам данные, такие как сообщения электронной почты, веб-страницы, документы Word и каталоги файлов. Однако он скорее ориентирован на процедуры, чем на объекты, и рассматривается как довольно сложный интерфейс для разработки доступа к источникам данных. Чтобы преодолеть это, ADO был разработан, чтобы быть объектно-ориентированным уровнем поверх OLE DB и обеспечивать более простой и высокоуровневый - хотя и очень мощный - способ работы с ним. Большое преимущество ADO состоит в том, что вы можете использовать его для управления свойствами, специфичными для данного типа источника данных, так же легко, как вы можете использовать его для доступа к тем свойствам, которые применяются ко всем типам источников данных. Вы не ограничены каким-либо неудовлетворительным наименьшим общим знаменателем.

Хотя все базы данных имеют драйверы ODBC, не все они имеют драйверы OLE DB. Однако существует интерфейс, доступный между OLE и ODBC, который можно использовать, если вы хотите получить к ним доступ в стиле OLE DB. Этот интерфейс называется MSDASQL (поставщик Microsoft OLE DB для ODBC).

Технологии доступа к данным SQL Server

Поскольку SQL Server (1) изготовлен Microsoft, а (2) платформа баз данных Microsoft , ODBC и OLE DB вполне подходят для него.

ODBC

Поскольку все другие платформы баз данных имели интерфейсы ODBC, Microsoft, очевидно, пришлось предоставить один для SQL Server. В дополнение к этому DAO, оригинальная технология по умолчанию в Microsoft Access, использует ODBC в качестве стандартного способа общения со всеми внешними источниками данных. Это сделало интерфейс ODBC непременным условием. Драйвер ODBC версии 6 для SQL Server, выпущенный вместе с SQL Server 2000, все еще существует. Обновленные версии были выпущены для обработки новых типов данных, технологий подключения, шифрования, HA / DR и т. Д., Которые появились в последующих выпусках. По состоянию на 07/07/2018 самым последним выпуском является версия 13.1 «Драйвер ODBC для SQL Server», выпущенная 23 марта 2018 года.

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) исключительно зависит от него.

Для этих целейons и другие , Microsoft фактически устарела как OLE DB как технология доступа к данным для выпусков SQL Server после v11 (SQL Server 2012). За пару лет до этого момента они создавали и обновляли собственный клиент SQL Server, который поддерживал технологии ODBC и OLE DB. Однако в конце 2012 года они объявили, что будут использовать ODBC для нативного доступа к реляционным данным в SQL Server, и призвали всех остальных сделать то же самое. Они также заявили, что выпуски SQL Server после v11 / SQL Server 2012 будут активно не поддерживать OLE DB!

Это объявление вызвало бурю протеста. Люди были в замешательстве, чтобы понять, почему MS внезапно обесценилась технология, которую они потратили годы, чтобы заставить их принять на себя обязательство. Кроме того, SSAS / SSRS и SSIS, которые были написанными MS-приложениями, тесно связанными с SQL Server, полностью или частично зависели от OLE DB. Еще одна жалоба заключалась в том, что у OLE DB были определенные желательные функции, которые казалось невозможным перенести обратно на ODBC - в конце концов, у OLE DB было много положительных моментов.

В октябре 2017 года Microsoft уступила и официально не одобрила OLE DB . Они объявили о скором появлении нового драйвера (MSOLEDBSQL), который будет иметь существующий набор функций Native Client 11, а также внедрит отказоустойчивость нескольких подсетей и поддержку TLS 1.2. Драйвер выпущен в марте 2018 года.

6 голосов
/ 19 сентября 2008

На базовом уровне это просто разные API для разных источников данных (то есть баз данных). OLE DB новее и, возможно, лучше.

Вы можете узнать больше об обоих в Википедии:

  1. OLE DB
  2. ODBC

т.е. Вы можете подключиться к той же базе данных, используя драйвер ODBC или драйвер OLE DB. Разница в поведении базы данных в этих случаях заключается в том, к чему относится ваша книга.

5 голосов
/ 08 октября 2012

Оба являются поставщиками данных (API, который ваш код будет использовать для связи с источником данных). Oledb, который был представлен в 1998 году, должен был заменить ODBC (введенный в 1992 году)

3 голосов
/ 19 сентября 2008

Я не уверен во всех деталях, но, насколько я понимаю, OLE DB и ODBC - это два API, которые доступны для подключения к различным типам баз данных без необходимости разбираться со всеми деталями реализации каждого из них. Согласно статье Википедии об OLE DB , OLE DB является наследником ODBC от Microsoft и предоставляет некоторые функции, которые вы не сможете использовать с ODBC, такие как доступ к электронным таблицам в качестве источников базы данных.

2 голосов
/ 16 мая 2018
2 голосов
/ 12 июля 2013

На веб-сайте Microsoft показано, что собственный поставщик OLEDB применяется непосредственно к SQL-серверу, а другой поставщик OLEDB - поставщик OLEDB для ODBC для доступа к другим базам данных, таким как Sysbase, DB2 и т. Д. В рамках поставщика OLEDB существуют различные типы компонентов. Подробнее см. Распределенные запросы на MSDN .

0 голосов
/ 19 декабря 2016

ODBC работает только для реляционных баз данных, он не может работать с нереляционными базами данных, такими как файлы MS Excel. Где Олебд может сделать все.

...