В чем разница между OLE DB и источниками данных ODBC?

Я читал статью справки MS Excel о pivotcache и задаюсь вопросом, что они подразумевают под источниками OLE DB и ODBC

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

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

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

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

Ответ 1

Согласно ADO: объекты данных ActiveX, книга Джейсона Т. Роффа, опубликованная O'Reilly Media в 2001 году (отличная диаграмма здесь), он точно говорит, что сказал МОЗИЛЛА.

(непосредственно со страницы 7 этой книги)

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

Таким образом, казалось бы, OLE DB взаимодействует с базами данных на основе SQL. THRU - уровень драйвера ODBC.

alt text

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

Ответ 2

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

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

Ответ 3

Здесь мое понимание (не авторитетное):

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

В какой-то момент различные поставщики datasouce (например, 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).

Ответ 4

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

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

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

Ответ 5

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 и т.д., Которые появились с последующими выпусками. По состоянию на 09/07/2018 самый последний выпуск - v13.1 "Драйвер ODBC для SQL Server", выпущенный 23/03/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) исключительно зависимым от него.

По этим причинам и другим, 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), который будет иметь существующий набор функций для собственного клиента 11, а также внедрит поддержку перехода на несколько подсетей и поддержку TLS 1.2. Водитель был выпущен в марте 2018 года.

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 10

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

Ответ 11

Чтобы узнать, почему M $изобретает OLEDB, вы не можете сравнивать OLEDB с ODBC. Вместо этого вы должны сравнить OLEDB с DAO, RDO или ADO. Последнее в значительной степени зависит от SQL. Однако OLEDB полагается на COM. Но ODBC уже существует уже много лет, поэтому есть мосты OLEDB-ODBC, чтобы исправить это. Я думаю, там большая картина, когда M $изобретает OLEDB.