ODBC i OLE DB to dwie konkurujące ze sobą technologie dostępu do danych. W szczególności w odniesieniu do SQL Server, Microsoft promował oba z nich jako preferowany kierunek przyszłości - choć w różnym czasie.
ODBC
ODBC to branżowy standardowy interfejs umożliwiający dostęp do danych tabelarycznych. Został opracowany przede wszystkim dla baz danych i prezentuje dane w zbiorach rekordów, z których każdy jest pogrupowany w zbiór pól. Każde pole ma swój własny typ danych, odpowiedni dla typu zawartych w nim danych. Każdy dostawca baz danych (Microsoft, Oracle, Postgres,…) dostarcza sterownik ODBC dla swojej bazy danych.
Istnieją również sterowniki ODBC dla obiektów, które choć nie są tabelami bazy danych, są na tyle podobne, że dostęp do danych w ten sam sposób jest przydatny. Przykładami są arkusze kalkulacyjne, pliki CSV i raporty kolumnowe.
OLE DB
OLE DB to technologia firmy Microsoft umożliwiająca dostęp do danych. W przeciwieństwie do ODBC obejmuje zarówno dane tabelaryczne, jak i inne niż tabelaryczne, takie jak wiadomości e-mail, strony internetowe, dokumenty programu Word i katalogi plików. Jest jednak zorientowany raczej na procedury niż obiektowo i jest uważany za dość trudny interfejs, za pomocą którego można rozwijać dostęp do źródeł danych. Aby temu zaradzić, ADO został zaprojektowany jako warstwa zorientowana obiektowo na wierzchu OLE DB i aby zapewnić prostszy i wyższy poziom - choć wciąż bardzo potężny - sposób pracy z nim. Ogromną zaletą ADO jest to, że można go używać do manipulowania właściwościami specyficznymi dla danego typu źródła danych, tak samo łatwo, jak można go używać do uzyskiwania dostępu do właściwości, które mają zastosowanie do wszystkich typów źródeł danych. Nie jesteś ograniczony do jakiegoś niezadowalającego najniższego wspólnego mianownika.
Chociaż wszystkie bazy danych mają sterowniki ODBC, nie wszystkie mają sterowniki OLE DB. Istnieje jednak interfejs między OLE i ODBC, którego można użyć, jeśli chcesz uzyskać do nich dostęp w sposób podobny do OLE DB. Ten interfejs nosi nazwę MSDASQL (dostawca Microsoft OLE DB dla ODBC).
Technologie dostępu do danych programu SQL Server
Ponieważ SQL Server jest (1) produkowany przez Microsoft i (2) jest platformą bazodanową Microsoft, zarówno ODBC, jak i OLE DB są dla niego naturalnym rozwiązaniem.
ODBC
Ponieważ wszystkie inne platformy bazodanowe miały interfejsy ODBC, Microsoft oczywiście musiał dostarczyć jeden dla SQL Server. Oprócz tego DAO, oryginalna domyślna technologia w programie Microsoft Access, używa ODBC jako standardowego sposobu komunikowania się ze wszystkimi zewnętrznymi źródłami danych. To sprawiło, że interfejs ODBC stał się warunkiem sine qua non. Sterownik ODBC w wersji 6 dla SQL Server, wydany wraz z SQL Server 2000, wciąż jest dostępny. Zostały wydane zaktualizowane wersje obsługujące nowe typy danych, technologie połączeń, szyfrowanie, HA / DR itp., Które pojawiły się w kolejnych wersjach. Od 09/07/2018 najnowszą wersją jest 13.1 „Sterownik ODBC dla SQL Server”, wydana 23.03.2018.
OLE DB
To własna technologia Microsoftu, którą intensywnie promował w latach 2002-2005 wraz z towarzyszącą jej warstwą ADO. Najwyraźniej mieli nadzieję, że stanie się to preferowaną technologią dostępu do danych. (Uczynili nawet ADO domyślną metodą uzyskiwania dostępu do danych w programie Access 2002/2003). Ostatecznie jednak okazało się, że nie stanie się to z wielu powodów, takich jak:
- Świat nie zamierzał przejść na technologie Microsoft i odejść od ODBC;
- DAO / ODBC był szybszy niż ADO / OLE DB i był również całkowicie zintegrowany z MS Access, więc nie umarł śmiercią naturalną;
- Nowe technologie opracowywane przez Microsoft, w szczególności ADO.NET, mogą również komunikować się bezpośrednio z ODBC. ADO.NET mógł również rozmawiać bezpośrednio z OLE DB (pozostawiając ADO w zaścianku), ale nie był (w przeciwieństwie do ADO) wyłącznie od niego zależny.
Z tych i innych powodów firma Microsoft faktycznie wycofała OLE DB jako technologię dostępu do danych dla wersji SQL Server po wersji v11 (SQL Server 2012). Przez kilka lat wcześniej tworzyli i aktualizowali SQL Server Native Client, który obsługiwał zarówno technologie ODBC, jak i OLE DB. Jednak pod koniec 2012 roku ogłosili, że będą dostosowywać się do ODBC w celu uzyskania natywnego dostępu do danych relacyjnych w SQL Server i zachęcali wszystkich do zrobienia tego samego. Ponadto stwierdził, że ich wersje SQL Server po v11 / SQL Server 2012 będzie aktywnie nie obsługują OLE DB!
To ogłoszenie wywołało burzę protestów. Ludzie nie mogli zrozumieć, dlaczego stwardnienie rozsiane nagle zaczęło deprecjonować technologię, na którą musieli się zaangażować przez lata. Ponadto SSAS / SSRS i SSIS, które były aplikacjami napisanymi przez MS, ściśle powiązanymi z SQL Server, były całkowicie lub częściowo zależne od OLE DB. Kolejnym zarzutem było to, że OLE DB miał pewne pożądane funkcje, których przeniesienie z powrotem do ODBC wydawało się niemożliwe - w końcu OLE DB miał wiele zalet.
W październiku 2017 roku Microsoft ustąpił i oficjalnie wycofał OLE DB . Ogłosili rychłe nadejście nowego sterownika (MSOLEDBSQL), który będzie miał istniejący zestaw funkcji klienta natywnego 11, a także wprowadzi przełączanie awaryjne wielu podsieci i obsługę protokołu TLS 1.2. Sterownik został wydany w marcu 2018 roku.