Это сочетание исторических / эволюционных и рыночных причин
Во время работы в Microsoft несколько лет назад было ясно, что в разработке было несколько различных предложений для данных. Каждое из предложений было нацелено на определенный рынок или вариант использования, например:
Доступ был нацелен на пользователей настольных компьютеров, которым удобны системы индексации карт, которые могли создавать приложения, используя формы и отчеты. SQL был естественным дополнением. Все они использовали свой собственный механизм базы данных локальной машины под названием «JET». В конце концов, JET оказался в стороне - на виноградной лозе говорилось, что отсутствие (надежного) контроля источников означало, что они потеряли большую часть источника.
FoxPro был нацелен на пользователей настольных компьютеров, которым нужна скорость по сравнению с реляционными данными.
SQL Server был «большой» системой баз данных на стороне предприятия / сервера со всеми масштабами / мощностью / доступностью и т. Д., Которые нужны предприятиям. IIRC, MS лицензировали версию Sybase 6 для сборки MSSQL.
Со временем некоторые границы стали размытыми - например, SQL Server теперь может работать на настольном компьютере, но сценарий использования остался.
Таким образом, это дает нам 3 «бэкенда» - базы данных, производимые Microsoft.
В дополнение к этому, для доступа к этим системам были предоставлены разные уровни API разработчика:
Изначально API-интерфейсов было немного - вы написали свой код внутри приложения (FoxPro / Access). VBA был одним из методов.
Microsoft внедрила MS ODBC для подключения к конкурирующим системам, чтобы Windows могла общаться с большими базами данных, такими как Oracle, Sybase и т. Д. Excel был одним из наиболее заметных приложений для получения инструментов ODBC - извлечения данных из вашей большой БД, манипулирования ими и графиками продуктов. / graphs и т. д. Многие поставщики баз данных в конечном итоге внедрили ODBC для обеспечения возможности подключения разнородных клиентов, поэтому эта стратегия была успешной ... в некоторой степени - ODBC можно рассматривать как представляющую наименьший общий знаменатель.
Различные команды начали разрабатывать свои собственные способы доступа к базе данных, такой как DAO (объекты доступа к данным) для локальных и RDO (удаленные объекты данных) для удаленных, доступных через VB, который был самым популярным продуктом для разработчиков MS в то время.
Внутренние усилия по рационализации этих разнообразных API и предоставлению единого / унифицированного и очень гибкого API доступа к базе данных дали нам OLEDB, но в него было очень трудно попасть (много шаблонов C ++).
OLEDB нельзя было использовать из VB, поэтому ADO разрабатывался с использованием методов ActiveX, поэтому его можно было повторно использовать всем, что может делать COM / OLE / ActiveX, то есть Access, Excel, VB и, следовательно, ASP стали базой данных.
Когда мы перешли в эру .NET, ADO естественным образом переместился в среду .NET, которая принесла различные преимущества.
С появлением LINQ реальный механизм доступа к базе данных стал менее проблематичным.
Предостережение - я ушел некоторое время назад, так что моя память немного размыта