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.) Однако в конечном итоге стало очевидно, что этого не произойдет по ряду причин, таких как:
- Мир не собирался переходить на технологии Microsoft и
от ODBC;
- DAO / ODBC был быстрее, чем ADO / OLE DB, а также был полностью интегрирован в MS Access, поэтому не собирался умереть естественной смертью;
- Новые технологии, которые разрабатывались 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 года.