Я читал справочную статью MS Excel о сводной кэш-памяти и удивлялся, что они имеют в виду под источниками OLE DB и ODBC
... Вы должны использовать свойство CommandText вместо свойства SQL, которое теперь существует главным образом для совместимости с более ранними версиями Microsoft Excel. Если вы используете оба свойства, значение свойства CommandText имеет приоритет.
Для источников OLE DB свойство CommandType описывает значение свойства CommandText.
Для источников ODBC свойство CommandText функционирует точно так же, как и свойство SQL, а установка свойства приводит к обновлению данных ...
Я очень ценю ваши короткие ответы.
Ответы:
Согласно книге ADO: ActiveX Data Objects , написанной Джейсоном Т. Роффом, изданной O'Reilly Media в 2001 году (отличная диаграмма здесь), он точно говорит, что сказал MOZILLA.
(прямо со страницы 7 этой книги)
Поэтому может показаться, что OLE DB взаимодействует с источниками данных на основе SQL через уровень драйверов ODBC.
Я не уверен на 100%, что это изображение правильное. Два соединения, в которых я не уверен, это ADO.NET через ADO C-api и OLE DB через ODBC к источнику данных на основе SQL (потому что на этой диаграмме автор не предоставляет доступ OLE DB через ODBC, что, как мне кажется, это ошибка).
источник
System.Data.SqlClient
обрабатывает протокол TDS в управляемом коде, используя только собственный код для обработки передачи TCP / Named Pipes / etc по сети. Для баз данных, у которых нет собственного управляемого поставщика, вы можете использоватьSystem.Data.OleDb
для переноса OLE DB илиSystem.Data.Odbc
для переноса ODBC, но это не рекомендуется.ODBC: - Только для реляционных баз данных (Sql Server, Oracle и т. Д.)
OLE DB: - Для реляционных и нереляционных баз данных. (Oracle, Sql-Server, Excel, необработанные файлы и т. Д.)
источник
Open Database Connectivity (ODBC) is Microsoft's strategic interface for accessing data in a heterogeneous environment of relational and non- relational database management systems.
support.microsoft.com/en-us/kb/110093Вот мое понимание (не авторитетное):
ODBC - это независимый от технологии открытый стандарт, поддерживаемый большинством поставщиков программного обеспечения. OLEDB - это API-интерфейс Microsoft, относящийся к конкретной технологии , начиная с эпохи 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).
источник
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 фактически осудила 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 года.
источник
На базовом уровне это просто разные API для разных источников данных (т.е. баз данных). OLE DB новее и, возможно, лучше.
Вы можете прочитать больше об обоих в Википедии:
Т.е. вы можете подключиться к той же базе данных, используя драйвер ODBC или драйвер OLE DB. Разница в поведении базы данных в этих случаях заключается в том, к чему относится ваша книга.
источник
Оба являются поставщиками данных (API, который ваш код будет использовать для связи с источником данных). Oledb, который был представлен в 1998 году, должен был заменить ODBC (представлен в 1992 году).
источник
• Август 2011 г. Microsoft отказывается от OLE DB ( Microsoft поддерживает ODBC для собственного реляционного доступа к данным )
• Октябрь 2017 года: Microsoft не поддерживает OLE DB ( анонс нового выпуска драйвера OLE DB для SQL Server ).
источник
Я не уверен во всех деталях, но я понимаю, что OLE DB и ODBC - это два API-интерфейса, которые доступны для подключения к различным типам баз данных без необходимости иметь дело со всеми деталями реализации каждого из них. Согласно статье в Википедии об OLE DB , OLE DB является наследником ODBC от Microsoft и предоставляет некоторые функции, которые вы, возможно, не сможете использовать с ODBC, такие как доступ к электронным таблицам в качестве источников базы данных.
источник
На веб-сайте Microsoft показано, что собственный поставщик OLEDB применяется непосредственно к SQL-серверу, а другой поставщик OLEDB называется OLEDB Provider для ODBC для доступа к другим базам данных, таким как Sysbase, DB2 и т. Д. В OLEDB Provider есть разные типы компонентов. Посмотрите Распределенные Запросы на MSDN для получения дополнительной информации.
источник
ODBC работает только для реляционных баз данных, он не может работать с нереляционными базами данных, такими как файлы MS Excel. Где Олебд может все.
источник
Чтобы узнать, почему M $ изобретает OLEDB, вы не можете сравнить OLEDB с ODBC. Вместо этого вы должны сравнить OLEDB с DAO, RDO или ADO. Последний в значительной степени опирается на SQL. Тем не менее, OLEDB опирается на COM. Но ODBC существует уже много лет, поэтому существуют мосты OLEDB-ODBC, чтобы исправить это. Я думаю, что есть большая картина, когда M $ изобретает OLEDB.
источник