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/03/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) не зависит исключительно от него.
По этим и другим причинам 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 года.