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

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

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

В соответствии с АДО:Объекты данных ActiveX, книга Джейсона Т.Рофф, опубликовано 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, что, я считаю, является ошибкой).

Другие советы

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

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

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

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

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

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

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

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

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

ОДБК

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

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

OLE БД

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, Microsoft, очевидно, была вынуждена предоставить такой интерфейс для SQL Server.В дополнение к этому, DAO, исходная технология по умолчанию в Microsoft Access, использует ODBC в качестве стандартного способа взаимодействия со всеми внешними источниками данных.Это сделало интерфейс ODBC непременным условием.Драйвер ODBC версии 6 для SQL Server, выпущенный вместе с SQL Server 2000, все еще существует.Были выпущены обновленные версии для поддержки новых типов данных, технологий подключения, шифрования, HA/DR и т. д.которые появились в последующих выпусках.По состоянию на 07.09.2018 последней версией является v13.1 «ODBC Driver for SQL Server», выпущенная 23.03.2018.

OLE БД

Это собственная технология Microsoft, которую они активно продвигали примерно с 2002 по 2005 год вместе с сопутствующим ей слоем ADO.Они, очевидно, надеялись, что это станет предпочтительной технологией доступа к данным.(Они даже сделали 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 как технология доступа к данным для выпусков SQL Server после версии 11 (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 года.

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

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

  1. OLE БД
  2. ОДБК

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

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

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

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

• Август 2011 г.:Майкрософт осуждает OLE БД (Microsoft сотрудничает с ODBC для собственного реляционного доступа к данным)

• Октябрь 2017 г.:Майкрософт отменяет поддержку OLE БД (Анонсируем новый выпуск драйвера OLE DB для SQL Server)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top