ODBC y OLE DB son dos tecnologías de acceso a datos competidoras. Específicamente con respecto a SQL Server, Microsoft los ha promocionado a ambos como su Dirección Futura Preferida, aunque en diferentes momentos.
ODBC
ODBC es una interfaz estándar de toda la industria para acceder a datos similares a tablas. Fue desarrollado principalmente para bases de datos y presenta datos en colecciones de registros, cada uno de los cuales se agrupa en una colección de campos. Cada campo tiene su propio tipo de datos adecuado para el tipo de datos que contiene. Cada proveedor de base de datos (Microsoft, Oracle, Postgres, ...) proporciona un controlador ODBC para su base de datos.
También hay controladores ODBC para objetos que, aunque no son tablas de base de datos, son lo suficientemente similares como para acceder a los datos de la misma manera. Ejemplos son hojas de cálculo, archivos CSV e informes en columnas.
OLE DB
OLE DB es una tecnología de Microsoft para el acceso a datos. A diferencia de ODBC, abarca datos con y sin formato de tabla, como mensajes de correo electrónico, páginas web, documentos de Word y directorios de archivos. Sin embargo, está orientado a procedimientos más que a objetos y se considera una interfaz bastante difícil para desarrollar el acceso a las fuentes de datos. Para superar esto, ADO fue diseñado para ser una capa orientada a objetos sobre OLE DB y para proporcionar una forma más simple y de alto nivel, aunque aún muy poderosa, de trabajar con ella. La gran ventaja de ADO es que puede usarlo para manipular propiedades que son específicas de un tipo determinado de fuente de datos, tan fácilmente como puede usarlo para acceder a esas propiedades que se aplican a todos los tipos de fuentes de datos. No está restringido a algún mínimo común denominador insatisfactorio.
Si bien todas las bases de datos tienen controladores ODBC, no todas tienen controladores OLE DB. Sin embargo, hay una interfaz disponible entre OLE y ODBC que se puede utilizar si desea acceder a ellas de forma similar a OLE DB. Esta interfaz se llama MSDASQL (proveedor Microsoft OLE DB para ODBC).
Tecnologías de acceso a datos de SQL Server
Dado que SQL Server es (1) creado por Microsoft y (2) la plataforma de base de datos de Microsoft, tanto ODBC como OLE DB son ideales para ello.
ODBC
Como todas las demás plataformas de bases de datos tenían interfaces ODBC, Microsoft obviamente tenía que proporcionar una para SQL Server. Además de esto, DAO, la tecnología predeterminada original en Microsoft Access, utiliza ODBC como la forma estándar de hablar con todas las fuentes de datos externas. Esto hizo que una interfaz ODBC fuera una condición sine qua non. El controlador ODBC de la versión 6 para SQL Server, lanzado con SQL Server 2000, todavía está disponible. Se han lanzado versiones actualizadas para manejar los nuevos tipos de datos, tecnologías de conexión, cifrado, HA / DR, etc. que han aparecido con versiones posteriores. A partir del 07/09/2018, la versión más reciente es v13.1 "Controlador ODBC para SQL Server", lanzado el 23/03/2018.
OLE DB
Esta es la tecnología propia de Microsoft, que estaban promoviendo fuertemente desde aproximadamente 2002 - 2005, junto con su capa ADO. Evidentemente, esperaban que se convirtiera en la tecnología de acceso a datos de elección. (Incluso hicieron de ADO el método predeterminado para acceder a los datos en Access 2002/2003.) Sin embargo, eventualmente se hizo evidente que esto no iba a suceder por varias razones, tales como:
- El mundo no iba a convertirse a las tecnologías de Microsoft y lejos de ODBC;
- DAO / ODBC era más rápido que ADO / OLE DB y también estaba completamente integrado en MS Access, por lo que no iba a morir de muerte natural;
- Las nuevas tecnologías desarrolladas por Microsoft, específicamente ADO.NET, también podrían comunicarse directamente con ODBC. ADO.NET también podía hablar directamente con OLE DB (dejando a ADO en un remanso), pero no era (a diferencia de ADO) únicamente dependiente de él.
Por estas y otras razones , Microsoft desaprobó OLE DB como tecnología de acceso a datos para las versiones de SQL Server después de v11 (SQL Server 2012). Durante un par de años antes de este punto, habían estado produciendo y actualizando el SQL Server Native Client, que era compatible con las tecnologías ODBC y OLE DB. Sin embargo, a fines de 2012 anunciaron que se alinearían con ODBC para el acceso de datos relacionales nativos en SQL Server, y alentaron a todos los demás a hacer lo mismo. Afirmaron además que las versiones de SQL Server después de v11 / SQL Server 2012 no admitirían activamente OLE DB.
Este anuncio provocó una tormenta de protestas. Las personas no sabían por qué la EM de repente estaba desaprobando una tecnología con la que habían pasado años haciendo que se comprometieran. Además, SSAS / SSRS y SSIS, que eran aplicaciones escritas en MS íntimamente vinculadas a SQL Server, dependían total o parcialmente de OLE DB. Otra queja más fue que OLE DB tenía ciertas características deseables que parecía imposible trasladar a ODBC; después de todo, OLE DB tenía muchos puntos positivos.
En octubre de 2017, Microsoft cedió y oficialmente dejó de usar OLE DB . Anunciaron la inminente llegada de un nuevo controlador (MSOLEDBSQL) que tendría el conjunto de características existente del Native Client 11 y también introduciría la conmutación por error de múltiples subredes y el soporte TLS 1.2. El controlador fue lanzado en marzo de 2018.