Microsoft Data Access Components ( MDAC ; también conocido como Windows DAC ) es un marco de trabajo de tecnologías interrelacionadas de Microsoft que permite a los programadores una forma uniforme y completa de desarrollar aplicaciones que puedan acceder a casi cualquier almacén de datos. Sus componentes incluyen: ActiveX Data Objects (ADO), OLE DB y Open Database Connectivity (ODBC). También ha habido varios componentes obsoletos, como Jet Database Engine , MSDASQL (el proveedor OLE DB para ODBC) y Remote Data Services (RDS). Algunos componentes también se han vuelto obsoletos , como la antigua API de objetos de acceso a datos y Remote Data Objects .
La primera versión de MDAC se publicó en agosto de 1996. En ese momento, Microsoft declaró que MDAC era más un concepto que un programa independiente y que no tenía un método de distribución generalizado. Más tarde, Microsoft publicó actualizaciones de MDAC como paquetes redistribuibles basados en la web. Finalmente, las versiones posteriores se integraron con Microsoft Windows e Internet Explorer , y en MDAC 2.8 SP1 dejaron de ofrecer MDAC como paquete redistribuible.
A lo largo de su historia, MDAC ha sido objeto de varias fallas de seguridad , que dieron lugar a ataques como un ataque de privilegios escalados , aunque las vulnerabilidades se solucionaron generalmente en versiones posteriores y con bastante prontitud. La versión actual es 2.8 service pack 1, pero el producto ha tenido muchas versiones diferentes y muchos de sus componentes han quedado obsoletos y reemplazados por tecnologías más nuevas de Microsoft. MDAC ahora se conoce como Windows DAC en Windows Vista .
La última versión de MDAC (2.8) consta de varios componentes que interactúan, todos ellos específicos de Windows, excepto ODBC (que está disponible en varias plataformas). La arquitectura de MDAC puede considerarse como tres capas: una capa de interfaz de programación, que consta de ADO y ADO.NET , una capa de acceso a la base de datos desarrollada por proveedores de bases de datos como Oracle y Microsoft ( OLE DB , proveedores administrados .NET y controladores ODBC ) y la base de datos en sí. Todas estas capas de componentes están disponibles para las aplicaciones a través de la API de MDAC . La biblioteca de red de Microsoft SQL Server , un método de acceso propietario específico de Microsoft SQL Server, también está incluida en MDAC. Se anima a los desarrolladores de aplicaciones de Windows a utilizar ADO o ADO.NET para el acceso a los datos, ya que el beneficio es que los usuarios del programa de aplicación no están limitados en su elección de la arquitectura de base de datos, excepto que debe ser compatible con MDAC. Naturalmente, los desarrolladores aún tienen la opción de escribir aplicaciones que accedan directamente a OLE DB y ODBC.
Microsoft SQL Server utiliza la biblioteca de red de Microsoft SQL Server (también conocida como Net-Lib) para leer y escribir datos mediante distintos protocolos de red . Aunque Net-Lib es específica de SQL Server, Microsoft la incluye con MDAC. SQL Server utiliza la biblioteca Open Data Services (ODS) para comunicarse con Net-Lib, que interactúa directamente con el subsistema Win32 de la línea de sistemas operativos Windows NT . La biblioteca de red de SQL Server se controla mediante el uso de una utilidad de red de cliente, que se incluye con SQL Server.
Cada protocolo de red compatible con Net-Lib tiene un controlador independiente (que no debe confundirse con un controlador de dispositivo ) y admite una capa de sesión en su pila de protocolos. Hay dos tipos generales de Net-Lib: la principal y la secundaria. La principal Net-Lib consta de una Super Socket Net-Lib y la Shared Memory Net-Lib, mientras que hay numerosas Net-Lib secundarias, incluidas las bibliotecas de red TCP/IP y de canalizaciones con nombre (las canalizaciones con nombre son un método de comunicación con otros procesos a través de una canalización persistente del sistema a la que se le asigna una identidad). El proveedor Microsoft OLE DB para SQL Server (SQLOLEDB) se comunica a través de Net-Libs principales.
La Super Socket Net-Lib se ocupa de las comunicaciones entre ordenadores y coordina las Net-Lib secundarias, aunque la Net-Lib secundaria TCP/IP es una excepción, ya que llama directamente a la API de Windows Sockets 2. Las Net-Lib Banyan VINES , AppleTalk , ServerNet , IPX/SPX , Giganet y RPC se eliminaron a partir de MDAC 2.5. El enrutador de la biblioteca de red tenía la tarea de gestionar todos estos protocolos, sin embargo, ahora el enrutador solo gestiona la Net-Lib secundaria de canalizaciones con nombre. La Super Socket Net-Lib también gestiona el cifrado de datos mediante el uso de la API SSL de Windows .
Por otro lado, la biblioteca de memoria compartida administra las conexiones entre varias instancias de SQL Server que existen en una computadora. Utiliza un área de memoria compartida para comunicarse entre los procesos. Esto es inherentemente seguro; no hay necesidad de cifrado de datos entre instancias de SQL Server que existen en una computadora, ya que el sistema operativo no permite que ningún otro proceso acceda al área de memoria compartida de las instancias.
Net-Lib también es capaz de soportar la suplantación del contexto de seguridad de un usuario conectado para protocolos que admiten conexiones autenticadas (llamadas conexiones confiables ). Esto permite a Net-Lib proporcionar un mecanismo de autenticación de inicio de sesión integrado mediante el uso de la autenticación de Windows . La autenticación de Windows no es compatible con Windows 98 o Windows Me. [1]
OLE DB (también llamada OLEDB u OLE-DB) permite a las aplicaciones MDAC acceder a diferentes tipos de almacenes de datos de una manera uniforme. Microsoft ha utilizado esta tecnología para separar la aplicación de los datos que puede almacenar en el sitio web del almacén de datos al que necesita acceder. Esto se hizo porque las diferentes aplicaciones necesitan acceder a diferentes tipos y fuentes de datos, y no necesariamente necesitan saber cómo acceder a la funcionalidad específica de la tecnología. La tecnología se divide conceptualmente en consumidores y proveedores . Los consumidores son las aplicaciones que necesitan acceder a los datos, y el proveedor es el componente de software que expone una interfaz OLE DB mediante el uso del Modelo de objetos componentes (o COM).
OLE DB es la tecnología de interfaz de acceso a bases de datos que utiliza MDAC. Los proveedores OLE DB se pueden crear para acceder a almacenes de datos tan simples como un archivo de texto o una hoja de cálculo , hasta bases de datos tan complejas como Oracle y SQL Server . Sin embargo, debido a que las diferentes tecnologías de almacenamiento de datos pueden tener diferentes capacidades, los proveedores OLE DB pueden no implementar todas las interfaces posibles disponibles. Las capacidades que están disponibles se implementan mediante el uso de objetos COM: un proveedor OLE DB asignará la funcionalidad de la tecnología de almacenamiento de datos a una interfaz COM particular. Microsoft dice que la disponibilidad de una interfaz es "específica del proveedor", ya que puede no ser aplicable según la tecnología de base de datos involucrada. Sin embargo, además, los proveedores también pueden aumentar las capacidades de un almacén de datos; estas capacidades se conocen como servicios en el lenguaje de Microsoft.
El proveedor Microsoft OLE DB para SQL Server (SQLOLEDB) es el proveedor OLE DB que Microsoft proporciona para Microsoft SQL Server desde la versión 6.5 en adelante.
Los archivos de vínculo de datos universales (o archivos ".udl") proporcionan una interfaz de usuario común para especificar atributos de conexión. Un usuario puede utilizar un cuadro de diálogo Propiedades de vínculo de datos para guardar la información de conexión en un archivo .udl como alternativa a especificarlos directamente a mano en una cadena de conexión. En consecuencia, estos archivos proporcionan un nivel conveniente de indirección . Además, el cuadro de diálogo especifica una serie de proveedores de datos OLE DB alternativos para una variedad de aplicaciones de destino. [2]
Open Database Connectivity (ODBC) es una interfaz nativa a la que se accede a través de un lenguaje de programación (normalmente C ) que puede realizar llamadas a una biblioteca nativa . En MDAC, esta interfaz se define como una DLL. Se necesita un módulo o controlador independiente para cada base de datos a la que se debe acceder. Las funciones de la API de ODBC se implementan mediante estos controladores específicos de DBMS. El controlador que Microsoft proporciona en MDAC se denomina controlador ODBC de SQL Server (SQLODBC) y (como su nombre lo indica) está diseñado para SQL Server de Microsoft. Es compatible con SQL Server v6.5 y versiones posteriores. [3] ODBC permite que los programas utilicen solicitudes SQL que accederán a bases de datos sin tener que conocer las interfaces propietarias de las bases de datos. Maneja la solicitud SQL y la convierte en una solicitud que el sistema de base de datos individual entiende. Según Microsoft, "Después de SQL Server 2012, el controlador ODBC se actualizará para las características de servidor más recientes, incluida la base de datos SQL de Microsoft Windows Azure, y se lanzará como el controlador ODBC de Microsoft para SQL Server". [4]
ActiveX Data Objects ( ADO ) es una interfaz de programación de alto nivel para OLE DB. Utiliza un modelo de objetos jerárquico para permitir que las aplicaciones creen, recuperen, actualicen y eliminen datos de forma programática de fuentes compatibles con OLE DB. ADO consta de una serie de objetos y colecciones jerárquicos basados en COM, un objeto que actúa como contenedor de muchos otros objetos. Un programador puede acceder directamente a los objetos ADO para manipular datos, o puede enviar una consulta SQL a la base de datos a través de varios mecanismos ADO. ADO se compone de nueve objetos y cuatro colecciones .
Las colecciones son:
Los objetos son:
Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';
"). [9] El inicio de la cual debe identificar el tipo de conexión al almacén de datos que requiere el objeto de conexión. Esto debe ser:Update
or UpdateBatch
. La adición de nuevos registros se realiza a través de la AddNew
función y luego llamando al método Update
or UpdateBatch
. [14] Los registros también se eliminan en el conjunto de registros con el método Delete y luego llamando al método Update. Sin embargo, si por alguna razón la eliminación no puede ocurrir, como debido a violaciones en la integridad referencial , entonces el conjunto de registros permanecerá en modo de edición después de la llamada al Update
método. El programador debe llamar explícitamente a la CancelUpdate
función para cancelar la actualización. Además, ADO puede revertir transacciones (si esto es compatible) y cancelar actualizaciones por lotes. [15] Los conjuntos de registros también se pueden actualizar de una de tres maneras: mediante una actualización inmediata, mediante una actualización por lotes, [16] o mediante el uso de transacciones:adLockOptimistic
o adLockPessimistic
. Los datos se actualizan en la fuente de datos después de que se modifica el registro y Update
se llama al método.adLockBatchOptimistic
y cada vez Update
que se llama, los datos se actualizan en un búfer temporal. Finalmente, cuando UpdateBatch
se llama, los datos se actualizan completamente en la fuente de datos. Esto tiene la ventaja de que todo se realiza en la memoria y, si ocurre un problema, UpdateCancel
se llama y las actualizaciones no se envían a la fuente de datos.BeginTrans
. Para iniciar la transacción, el programador invoca el método y realiza las actualizaciones necesarias. Cuando todas están terminadas, el programador invoca el CommitTrans
método. RollbackTrans
se puede invocar para cancelar cualquier cambio realizado dentro de la transacción y hacer que la base de datos vuelva al estado anterior al inicio de la transacción [17]ADO.NET es la última versión de ADO (después de ADO 2.8, ahora a menudo denominado ADO Classic) y es parte de la pila MDAC 2.8 junto con ADO clásico. Está construido alrededor de Microsoft .NET . Aunque a veces se lo ve como un paso evolutivo de ADO, Microsoft realizó algunos cambios estructurales fundamentales. ADO.NET se ejecuta a través de un proveedor administrado de .NET, una versión modificada de un proveedor OLE DB diseñado específicamente para .NET. La estructura del objeto ya no se construye alrededor de un objeto Recordset. En su lugar, se utiliza un objeto Dataset para contener datos recopilados de múltiples fuentes. Esto es transparente para el programador. A diferencia del antiguo Recordset de ADO, el diseño del Dataset promueve el uso de datos desconectados. Conceptualmente, un objeto Dataset puede verse como una pequeña base de datos relacional en memoria por derecho propio que permite la manipulación de datos en cualquier dirección. Para propagar los cambios de vuelta a la base de datos, se utiliza un objeto DataAdapter que transfiere datos entre la fuente de datos y el objeto DataSet. Los cursores también quedaron obsoletos en ADO.NET y fueron reemplazados por un objeto DataReader , que se utiliza para procesar de manera eficiente una gran lista de resultados, un registro a la vez, sin almacenarlos. [26]
MDAC es un marco de componentes en constante evolución. Por ello, ha habido varios componentes que antes formaban parte de él pero que desde entonces han quedado obsoletos o se han eliminado por completo del marco.
Jet son las siglas de Joint Engine Technology y era un motor de base de datos utilizado para Microsoft Access , Microsoft Exchange Server y Visual Basic . Jet formaba parte de un sistema de gestión de bases de datos relacionales (RDBMS) y ofrecía una única interfaz que otro software podía utilizar para acceder a las bases de datos de Microsoft. Jet también proporcionaba compatibilidad con seguridad, integridad referencial , procesamiento de transacciones , indexación , bloqueo de registros y páginas y replicación de datos. En versiones posteriores de Jet, el motor se amplió para ejecutar consultas SQL , almacenar datos de caracteres en formato Unicode , crear vistas y permitir la replicación bidireccional con Microsoft SQL Server. Fue reemplazado por MSDE , que a su vez reemplazó a SQL Server Express .
Jet tenía tres módulos. Uno de ellos era el controlador ISAM nativo de Jet , una biblioteca de vínculos dinámicos (DLL) de Jet que podía manipular directamente los archivos de base de datos de Microsoft Access (MDB), que era una forma modificada de una base de datos de método de acceso secuencial indexado (ISAM). Otro de los módulos eran los controladores ISAM , DLL que permitían el acceso a bases de datos ISAM, entre ellas los archivos de Xbase , Paradox , Btrieve y FoxPro . El último módulo era la DLL de objetos de acceso a datos (DAO) , que permitía a los programadores acceder al motor Jet. Básicamente, era un lenguaje de datos orientado a objetos utilizado por los desarrolladores de aplicaciones de Access Basic y Visual Basic para acceder a Jet.
De manera similar, el proveedor OLE DB de Microsoft Jet y los objetos de replicación (JRO) que permitían la replicación entre fuentes de datos Jet se eliminaron de MDAC 2.6 [27].
El proveedor OLE DB de Microsoft para ODBC, o ODBC MSDASQL
, era un proveedor OLE DB que permitía a los objetos de datos ActiveX acceder a bases de datos a través de cualquier controlador ODBC. Microsoft suministró varios proveedores OLE-DB (para el servicio de indexación, Active Directory , Jet, SQL Server, Oracle ( MSDAORA
[28] ) e Internet Publishing), sin embargo, a menos que se indicara lo contrario, ADO utilizó MSDASQL como proveedor predeterminado de forma predeterminada. Después de MDAC 2.5, tanto el controlador ODBC de Oracle como MSDASQL admitieron Oracle 7 y admitieron parcialmente Oracle 8i. Las características que no fueron admitidas fueron:
Inicialmente, Microsoft dejó obsoleto el componente MSDASQL para sus sistemas operativos de 64 bits [29] y el controlador ODBC de Microsoft Oracle fue reemplazado posteriormente por un proveedor Oracle administrado .NET, que soportaba Oracle 9i. [30] Sin embargo, Windows Server 2008 y Windows Vista SP1 se entregan con una versión de 64 bits de MSDASQL.
Los servicios de datos remotos (RDS) permitían recuperar un conjunto de datos del servidor, que luego el cliente modificaba de alguna manera y luego enviaba de vuelta al servidor para su posterior procesamiento. [31] Con la adopción popular de Transact-SQL , que extiende SQL con construcciones de programación tales como bucles y declaraciones condicionales, esto se volvió menos necesario y finalmente quedó obsoleto en MDAC 2.7. Microsoft produjo SOAP Toolkit 2.0, que permite a los clientes hacer esto a través de un estándar abierto basado en XML . [32]
SQLXML fue diseñado para SQL Server 2000, pero quedó obsoleto con MDAC 2.6. Permitía que la base de datos relacional de Microsoft se viera mediante XPath y que los datos se vieran como un archivo XML . En realidad, no quedó obsoleto, pero se eliminó de las versiones posteriores de MDAC, aunque Microsoft lo proporciona como un componente descargable y lo admitirá en sus sistemas operativos de 64 bits.
Microsoft ha eliminado por completo varios componentes de MDAC y ya no reciben soporte. Estos son:
Microsoft ha lanzado varias versiones de MDAC a lo largo del tiempo. El método de distribución ha variado y el conjunto de características es diferente para cada versión.
MDAC 1.0 se lanzó por primera vez en agosto de 1996. [35] Según Microsoft, "MDAC 1.0 existía más como concepto que como un programa de instalación independiente y coordinado". La pila MDAC 1.0 constaba de ODBC 3.0, OLE DB 1.1, ADO 1.0 y Advanced Data Connector (ADC) 1.0, que según Microsoft fue el precursor del Remote Data Service de MDAC 1.5. También incluía controladores ODBC para bases de datos Access/Jet, SQL Server y Oracle . MDAC 1.0 se lanzó a través de varios mecanismos: Advanced Data Connector se envió con Internet Information Server (IIS) 3.0 y como un archivo cab descargable ; OLE DB 1.1 y ADO 1.0 se enviaron con el OLE DB 1.1 SDK, que venía con Visual Studio 97 y también se podía descargar. [36] MDAC 1.0 venía con Active Server Pages, que a su vez venía en IIS 3.0, y también venía con Visual InterDev 1.0. [37]
MDAC 1.5 se publicó entre septiembre de 1997 y marzo de 1998, y su mecanismo de distribución era más centralizado que el de MDAC 1.0. Se publicó con Microsoft Internet Explorer 4.0, el SDK de Internet Client 4.0 y mediante un CD-ROM que se entregó en la Conferencia de desarrolladores profesionales (PDC) de 1997. Existían cinco versiones de MDAC 1.5:
Las diferentes versiones de MDAC 1.5 consistían en:
Esta versión de MDAC tenía una falla de seguridad que la hacía vulnerable a un ataque de privilegios escalados . La vulnerabilidad hacía que los sistemas que tenían instalados tanto IIS como MDAC dieran a un usuario web no autorizado la capacidad de ejecutar comandos de shell en el sistema IIS como un usuario privilegiado. Esto permitía al atacante utilizar MDAC para canalizar solicitudes de datos SQL y otros datos ODBC a través de la conexión pública a una red back-end privada cuando se encontraba en un sistema IIS conectado a Internet con múltiples hosts . También permitía al usuario obtener acceso no autorizado a archivos seguros y no publicados en el sistema IIS [38]
MDAC 1.5 fue la última versión del componente de acceso a datos compatible con Windows NT 3.51 SP5.
MDAC 2.0 se distribuyó con el SDK de Data Access 2.0 e incluía el contenido de MDAC 1.5, el SDK de ODBC 3.5 y el SDK de OLE DB 1.5, y la especificación OLE DB para OLAP . También incluía muchas actualizaciones del producto principal, [36] incluida una característica de seguridad añadida al RDS que impedía que se utilizara de forma maliciosa en un servidor IIS. [39] Esta versión venía incluida en Windows NT 4.0 SP4, [40] y también con Visual Studio 6.0, que venía con el SDK de Data Access completo. [36]
MDAC 2.1 se distribuyó con SQL Server 7.0 y SQL Server 6.5 SP5. MDAC 2.1 SP1 se distribuyó con Internet Explorer 5 y MDAC 2.1 SP1a (GA) se distribuyó con Microsoft Office 2000, BackOffice 4.5 y Visual Studio 98 SP3. Sin embargo, ninguna de estas versiones de MDAC se lanzó al público en general a través de la World Wide Web . MDAC 2.1 SP2 se distribuyó desde el sitio web de Microsoft. Los componentes que se incluyeron con 2.1 fueron:
Esta versión tenía vulnerabilidades de seguridad por las cuales un buffer sin verificar podía permitir un ataque con privilegios elevados. Esto se descubrió algún tiempo después y afectó a MDAC 2.1, 2.5 y 2.6 y se solucionó en un parche posterior [42].
MDAC 2.5 se lanzó el 17 de febrero de 2000 y se distribuyó con Windows 2000. Los paquetes de servicio de MDAC se lanzaron en paralelo con los paquetes de servicio de Windows 2000. También se distribuyeron a través del sitio web de Microsoft. Se lanzaron tres paquetes de servicio. Los componentes incluidos con 2.5 fueron:
Se encontraron varios problemas en esta versión de MDAC. Al utilizar OLE DB Session Pooling, Microsoft COM+ intentaría cargar y descargar OLE DB continuamente, y podría surgir un conflicto que provocara que OLE DB Session Pooling se ejecutara con un uso de CPU del 100%. Esto se solucionó más tarde. [44] Microsoft publicó una lista completa de errores corregidos en MDAC 2.5 Service Pack 2 y MDAC 2.5 Service Pack 3. También existía una vulnerabilidad de seguridad (que se solucionó más tarde) por la que se encontró un búfer sin comprobar en el controlador de SQL Server. Esta falla se introdujo en MDAC 2.5 SP2.
MDAC 2.6 se lanzó en septiembre de 2000 y se distribuyó a través de la web y con Microsoft SQL Server 2000 [45] MDAC 2.6 RTM, SP1 (lanzado el 20 de junio de 2001) y SP2 (lanzado el 11 de junio de 2002) se distribuyeron en paralelo con los paquetes de servicio de Microsoft SQL Server 2000 y también se podían descargar desde el sitio web de Microsoft.
A partir de esta versión de MDAC, no se incluyeron Microsoft Jet, Microsoft Jet OLE DB Provider ni los controladores de base de datos de escritorio ODBC. En su lugar, se podían instalar manualmente. [46] Microsoft también publicó una alerta advirtiendo que MDAC 2.6 no se debería instalar en un clúster de SQL Server 7.0, porque "si instala MDAC 2.6 o posterior en cualquier nodo del clúster, directamente o mediante la instalación de otro programa, puede provocar un fallo catastrófico del Agente SQL Server u otros servicios de SQL Server". [47] Este problema afectó a Backup Exec 9.0 de Veritas Software para servidores Windows, porque instala Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) como su base de datos. La revisión 4367 instaló MDAC versión 2.6 SP2, mientras que la revisión 4454 instaló MDAC versión 2.7 SP1, que no tenía el problema [48]
MDAC 2.7 se lanzó en octubre de 2001 a través del sitio web de Microsoft. En abril de 2002 se publicó una versión actualizada a través del lanzamiento de Windows XP y del sitio web de Microsoft. La versión 2.7 estaba disponible en inglés de EE. UU. , chino (tradicional y simplificado), alemán, japonés, coreano, portugués brasileño , checo , danés, griego, eslovaco , esloveno , español, finlandés, francés, húngaro, italiano, holandés , noruego, polaco, portugués, ruso, sueco y turco . El hebreo y el árabe solo estaban disponibles a través de Windows XP.
El principal cambio de características fue el soporte para el sistema operativo de 64 bits de Microsoft , sin embargo, el soporte para Banyan VINES también se eliminó de esta versión de MDAC. Hubo varios problemas conocidos: [49] MDAC 2.7 continuó causando problemas de conectividad en servidores agrupados que ejecutaban Microsoft SQL Server 6.5 o SQL Server 7.0, sin que Microsoft proporcionara una solución alternativa. Al crear o configurar nombres de origen de datos ODBC (DSN) utilizando el controlador ODBC de Microsoft SQL Server, el protocolo de biblioteca de red podría cambiar inesperadamente a TCP/IP , incluso si el DSN estaba configurado para usar canalizaciones con nombre . [50] Este problema fue encontrado por el reportero de InfoWorld Randall C. Kennedy , quien identificó que el cambio se realizó en realidad en MDAC 2.6 pero nunca se documentó. Se descubrió al probar cargas de trabajo de base de datos cliente/servidor en una computadora con Windows XP; InfoWorld afirma que, aunque la utilización general de la CPU del servidor aumentó sólo un 8 por ciento utilizando TCP/IP, los cambios de contexto por segundo cayeron más del 150 por ciento (lo que, por supuesto, es imposible porque entonces tendríamos una tasa de cambios de contexto negativa: la caída es del 33% o del 60% según en qué planeta estuviera el autor en el momento de escribir) para una carga de trabajo de 10 usuarios. No les impresionó que se produjera un cambio funcional fundamental en el comportamiento predeterminado de Net-Lib sin más que una mención pasajera en un documento no relacionado. [51] Los usuarios de Windows XP también experimentaron a veces problemas para conectarse a SQL Server porque SQL Server intenta utilizar los certificados que encuentra en la computadora local; sin embargo, si hay más de un certificado disponible, no sabe cuál utilizar. [52] Al intentar utilizar Microsoft Analysis Services 2000 RTM, a veces aparecía un error al intentar explorar los cubos. [53] Microsoft también descubrió un problema en el programa de instalación de Windows 95 , Windows 98 y Windows Me que impedía que el programa de instalación de MDAC se revirtiera cuando encontraba un error de instalación. [54]
Microsoft ha resuelto varios problemas de seguridad en MDAC 2.7. David Litchfield , de Next Generation Security Software Ltd, informó de una vulnerabilidad de seguridad que se produce porque una de las funciones ODBC de MDAC que se utiliza para conectarse a fuentes de datos contenía un búfer sin comprobar. [55] Otra vulnerabilidad que se ha solucionado es la que permite a un atacante responder a un mensaje de descubrimiento de SQL Server transmitido por los clientes con un paquete especialmente diseñado que puede provocar un desbordamiento del búfer. [56] Se ha descubierto otra falla que permite ejecutar código de forma remota cuando el atacante responde a la transmisión con otro paquete especialmente diseñado. [57]
MDAC 2.8 se lanzó en agosto de 2003 y se distribuyó con Microsoft Windows Server 2003 , así como en el sitio web Data Access Technologies de Microsoft. No introdujo ninguna característica nueva al producto, pero corrigió una serie de errores y problemas de seguridad: se eliminó un archivo reg (que automatiza los cambios en el registro) que hacía que el servidor se ejecutara en un modo "inseguro" mediante el cual se podía explotar el RDS para obtener acceso no autorizado al sistema [58] y se impuso una nueva restricción en la longitud de la cadena de consulta Shape. [59] También hubo varios cambios en el administrador ODBC. [60]
El 23 de mayo de 2005, Brad Rhodes (director principal de programas de Microsoft Data Access Technologies) anunció que MDAC 2.8 SP1 era el último redistribuible independiente de MDAC que Microsoft lanzaría. MDAC es ahora un componente oficial del sistema operativo de Microsoft, aunque seguirán proporcionando correcciones de errores y de seguridad a las versiones publicadas anteriormente de la versión distribuible en la Web. [61] Sin embargo, Microsoft ha creado un nuevo componente llamado SQL Native Client (SQLNCLI), que es una API de acceso a datos independiente que ha combinado las bibliotecas OLE DB y ODBC en una sola DLL. Se formó para que fuera independiente de MDAC, que ahora depende del estado en el que se encuentra el sistema operativo: un desarrollador ahora se vincula a esta biblioteca y evita situaciones en las que una actualización del sistema operativo que actualiza MDAC rompe las aplicaciones creadas para una versión diferente de MDAC. [62]
Windows 7 SP1 ha interrumpido la compatibilidad con versiones posteriores de MDAC 2.8. El software compilado en Windows 7 SP1 que depende de MDAC ADO no funcionará en versiones de Windows anteriores a Windows 7 SP1 (incluidos Windows 7 RTM, Vista y XP). [63] Microsoft ha proporcionado soluciones para solucionar este problema en algunas aplicaciones, pero las aplicaciones VBA siguen afectadas. [64] La solución para este problema se publicó en febrero de 2012. [65]
Windows Vista ya no utilizará MDAC, sino que utilizará Windows DAC, que consta de versiones actualizadas de los componentes ADO, OLE DB y ODBC. Según Microsoft, "Windows DAC incluye algunos cambios para funcionar con Windows Vista, pero es casi totalmente equivalente funcionalmente a MDAC 2.8". [66]
Existen dos formas de comprobar la versión de MDAC que está instalada en un equipo. En el caso de Windows 2000, Windows XP y Windows Server 2003, una forma de comprobarlo es a través del programa Component Checker de Microsoft, que compara el valor de cada DLL de MDAC instalada con el manifiesto del archivo MDAC. La segunda forma es comprobar la clave HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVer
en el registro de Windows . Microsoft advierte de que esta información puede ser incorrecta para las versiones de MDAC anteriores a la 2.1 en comparación con las versiones de los archivos MDAC instalados en el sistema [67].
[...] utilice el [...] proveedor Oracle OLE DB (MSDAORA) para acceder a los datos de Oracle.