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

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

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

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

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

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

Согласно ADO: ActiveX Data Objects , книга Джейсона Т. Роффа, опубликованная 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, который, я считаю, это ошибка).

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

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

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

ODBC – это неформальный открытый стандарт, поддерживаемый большинством поставщиков программного обеспечения. OLEDB – это специфический для Microsoft интерфейс API от 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).

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

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

  1. OLE DB
  2. ODBC

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

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

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

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

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

• Август 2011 года: Microsoft обесценивает OLE DB ( Microsoft выравнивает с ODBC для собственного реляционного доступа к данным )

• Октябрь 2018 года: Microsoft забывает OLE DB ( анонсирует новую версию драйвера OLE DB для SQL Server )

ODBC и OLE – это две конкурирующие технологии доступа к данным. В частности, в отношении 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 является платформой базы данных 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 года.

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

  • Поиск значений через datagridview
  • При чтении CSV-файла с использованием DataReader и поставщика данных OLEDB Jet, как я могу управлять типами данных столбцов?
  • Оптимальный способ чтения файла Excel (.xls / .xlsx)
  • как обновить таблицу с помощью параметров oledb?
  • Пытаясь вставить поле DateTime.Now в Date / Time, появляется сообщение «Ошибка несоответствия типа данных»
  • OLEDB Параметрированный запрос
  • Доступ к синтаксической ошибке SQL при использовании OleDbCommandBuilder
  • Разбор CSV с использованием OleDb с использованием C #
  • Interesting Posts

    как реплицировать pinterest.com’s абсолютное расположение стека div

    В чем разница между строго типизированным языком и статически типизированным языком?

    Как включить все изображения в файле jar с помощью eclipse

    Структура для нескольких проектов JSF с общим кодом

    Как вставить текущее имя файла в Excel?

    Как загрузить большой плоский файл в таблицу базы данных с помощью SSIS?

    Использование сжатия GZIP с помощью Spring Boot / MVC / JavaConfig с RESTful

    Какая разница между каталогами .ssh и .ssh2

    Перерыв или возврат из streamа Java 8 для каждого?

    Есть ли причина для вызова delete в C ++, когда программа все равно выходит?

    Как создать контрольные массивы в VB .NET

    Java: определение терминов инициализация, декларация и присвоение

    андроидный fragment. Как сохранить состояния представлений в fragmentе, когда другой fragment нажат поверх него

    Как узнать, какой пакет принадлежит файлу?

    Angular 2 2.0.0-rc.1 Свойство ‘map’ не существует в типе ‘Observable ‘ не совпадает с сообщением о выпуске

    Давайте будем гением компьютера.