Los Componentes de Acceso a Datos de Microsoft ( MDAC ; también conocidos como Windows DAC ) son un marco de tecnologías interrelacionadas de Microsoft que permite a los programadores desarrollar aplicaciones de forma uniforme y completa, con acceso a prácticamente cualquier almacén de datos. Sus componentes incluyen: ActiveX Data Objects (ADO), OLE DB y Open Database Connectivity (ODBC). También se han descontinuado varios componentes, como Jet Database Engine , MSDASQL (el proveedor OLE DB para ODBC) y Remote Data Services (RDS). Algunos componentes también han quedado obsoletos , como la antigua API de Data Access Objects y Remote Data Objects .
La primera versión de MDAC se lanzó en agosto de 1996. En aquel entonces, Microsoft declaró que MDAC era más un concepto que un programa independiente y que no contaba con un método de distribución generalizado. Posteriormente, Microsoft lanzó actualizaciones de MDAC como paquetes redistribuibles basados en la web. Con el tiempo, 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 vulnerabilidades de seguridad , que dieron lugar a ataques como el de escalada de privilegios , aunque estas vulnerabilidades generalmente se corrigieron en versiones posteriores y con bastante rapidez. La versión actual es la 2.8 Service Pack 1, pero el producto ha tenido muchas versiones diferentes y muchos de sus componentes han sido descontinuados y reemplazados por tecnologías más recientes de Microsoft. MDAC ahora se conoce como Windows DAC en Windows Vista .
Arquitectura
La última versión de MDAC (2.8) consta de varios componentes que interactúan entre sí, todos específicos de Windows , excepto ODBC (disponible en varias plataformas). La arquitectura de MDAC se puede visualizar como tres capas: una capa de interfaz de programación, compuesta por ADO y ADO.NET ; una capa de acceso a la base de datos desarrollada por proveedores como Oracle y Microsoft ( OLE DB , proveedores gestionados .NET y controladores ODBC ); y la base de datos propiamente dicha. 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 se incluye en MDAC. Se recomienda a los desarrolladores de aplicaciones de Windows que utilicen ADO o ADO.NET para el acceso a datos, ya que los usuarios de la aplicación no están limitados en su elección de arquitectura de base de datos, salvo que esta sea compatible con MDAC. Naturalmente, los desarrolladores también pueden optar por escribir aplicaciones que accedan directamente a OLE DB y ODBC.
Biblioteca de red de Microsoft SQL Server
La biblioteca de red de Microsoft SQL Server (también conocida como Net-Lib) es utilizada por Microsoft SQL Server para leer y escribir datos mediante diversos protocolos de red . Si bien Net-Lib es específica de SQL Server, Microsoft la incluye en MDAC. SQL Server utiliza la biblioteca Open Data Services (ODS) para comunicarse con Net-Lib, la cual interactúa directamente con el subsistema Win32 del sistema operativo Windows NT . La biblioteca de red de SQL Server se controla mediante una utilidad de red 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. Existen dos tipos generales de Net-Lib: la primaria y la secundaria. La Net-Lib primaria consta de Super Socket Net-Lib y Shared Memory Net-Lib, mientras que existen numerosas Net-Libs secundarias, incluidas las bibliotecas de red TCP/IP y de tuberías con nombre (las tuberías con nombre son un método para comunicarse 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 primarias.
La biblioteca Super Socket Net-Lib gestiona las comunicaciones entre ordenadores y coordina las bibliotecas secundarias Net-Lib , aunque la biblioteca secundaria TCP/IP es una excepción, ya que llama directamente a la API Windows Sockets 2. Las bibliotecas Banyan VINES , AppleTalk , ServerNet , IPX/SPX , Giganet y RPC Net-Lib se eliminaron a partir de MDAC 2.5. El enrutador de la biblioteca de red se encargaba de gestionar todos estos protocolos; sin embargo, ahora solo gestiona la biblioteca secundaria de tuberías con nombre. La biblioteca Super Socket Net-Lib también gestiona el cifrado de datos mediante la API SSL de Windows .
Por otro lado, la biblioteca de memoria compartida Net-Lib gestiona las conexiones entre varias instancias de SQL Server que existen en un mismo equipo. Utiliza un área de memoria compartida para la comunicación entre los procesos. Esto es intrínsecamente seguro; no es necesario cifrar los datos entre las instancias de SQL Server que existen en un equipo, 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 puede suplantar el contexto de seguridad de un usuario que ha iniciado sesión para protocolos que admiten conexiones autenticadas (denominadas conexiones de confianza ). Esto permite a Net-Lib proporcionar un mecanismo de autenticación de inicio de sesión integrado mediante la autenticación de Windows . La autenticación de Windows no es compatible con Windows 98 ni Windows Me. [ 1 ]
OLE DB
OLE DB (también llamado OLEDB u OLE-DB) permite que las aplicaciones MDAC accedan a diferentes tipos de almacenes de datos de forma uniforme. Microsoft ha utilizado esta tecnología para separar la aplicación del almacén de datos al que necesita acceder. Esto se debe a que las distintas aplicaciones requieren acceso 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 Modelo de Objetos Componentes (o COM).
OLE DB es la tecnología de interfaz de acceso a bases de datos utilizada por MDAC. Se pueden crear proveedores OLE DB para acceder a almacenes de datos sencillos, como archivos de texto u hojas de cálculo , o a bases de datos complejas como Oracle y SQL Server . Sin embargo, debido a que las distintas tecnologías de almacenamiento de datos pueden tener capacidades diferentes, es posible que los proveedores OLE DB no implementen todas las interfaces disponibles. Las capacidades disponibles se implementan mediante objetos COM : un proveedor OLE DB asigna la funcionalidad de la tecnología de almacenamiento de datos a una interfaz COM específica. Microsoft denomina a la disponibilidad de una interfaz "específica del proveedor", ya que puede no ser aplicable según la tecnología de base de datos utilizada. Además, los proveedores también pueden ampliar las capacidades de un almacén de datos; estas capacidades se conocen como servicios en la terminología de Microsoft.
El proveedor Microsoft OLE DB para SQL Server (SQLOLEDB) es el proveedor OLE DB que Microsoft proporciona para Microsoft SQL Server a partir de la versión 6.5.
Enlace de datos universal
Los archivos de enlace de datos universales (o archivos '.udl') proporcionan una interfaz de usuario común para especificar los atributos de conexión. Un usuario puede usar un cuadro de diálogo de Propiedades de enlace de datos para guardar la información de conexión en un archivo .udl como alternativa a especificarla directamente a mano en una cadena de conexión. En consecuencia, estos archivos proporcionan un nivel de indirección conveniente . Además, el cuadro de diálogo especifica varios proveedores de datos OLE DB alternativos para diversas aplicaciones de destino. [ 2 ]
ODBC
La conectividad abierta de bases de datos (ODBC) es una interfaz nativa a la que se accede mediante 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 deba acceder. Las funciones de la API ODBC son implementadas por estos controladores específicos del sistema de gestión de bases de datos (DBMS). El controlador que Microsoft proporciona en MDAC se denomina controlador ODBC de SQL Server (SQLODBC) y, como su nombre 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 para acceder a las bases de datos sin necesidad de conocer las interfaces propietarias de las mismas. Gestiona la solicitud SQL y la convierte en una solicitud que el sistema de base de datos individual pueda comprender. Según Microsoft, «Después de SQL Server 2012, el controlador ODBC se actualizará para incorporar las características más recientes del servidor, incluida Microsoft Windows Azure SQL Database, y se lanzará como el controlador ODBC de Microsoft para SQL Server». [ 3 ]
ALHARACA
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 fuentes compatibles con OLE DB mediante programación. ADO consta de una serie de objetos y colecciones jerárquicos basados en COM, donde un objeto actúa como contenedor de muchos otros objetos. Un programador puede acceder directamente a los objetos ADO para manipular datos o enviar una consulta SQL a la base de datos mediante diversos mecanismos de ADO. ADO se compone de nueve objetos y cuatro colecciones .
Las colecciones son:
- Campos: Esta colección contiene un conjunto de objetos Campo. La colección se puede usar tanto en un objeto Conjunto de registros como en un objeto Registro. En un objeto Conjunto de registros, cada uno de los objetos Campo que componen la colección Campos corresponde a una columna de dicho objeto Conjunto de registros. En un objeto Registro, un Campo puede ser una URL absoluta o relativa que apunta a un espacio de nombres con estructura de árbol (utilizado para proveedores de datos semiestructurados como el proveedor Microsoft OLE DB para publicación en Internet) o una referencia al objeto Flujo predeterminado asociado con ese objeto Registro. [ 4 ]
- Propiedades: Un objeto puede tener más de un objeto de propiedad, los cuales están contenidos en la colección de propiedades del objeto. [ 5 ]
- Parámetros: Un objeto Command puede tener varios comandos Parameter para cambiar su comportamiento predefinido, y cada uno de los objetos Parameter está contenido en la colección Parameters del objeto Command [ 6 ].
- Errores: Todos los errores creados por el proveedor se pasan a una colección de objetos Error, mientras que la colección Errors en sí está contenida en un objeto Connection. Cuando una operación ADO crea un error, la colección se vacía y se crea un nuevo grupo de objetos Error en la colección. [ 7 ]
Los objetos son:
- Conexión: El objeto de conexión es la conexión de ADO a un almacén de datos a través de OLE DB. El objeto de conexión almacena información sobre la sesión y proporciona métodos para conectarse al almacén de datos. Dado que algunos almacenes de datos tienen diferentes métodos para establecer una conexión, es posible que algunos métodos no sean compatibles con el objeto de conexión para determinados proveedores de OLE DB. Un objeto de conexión se conecta al almacén de datos mediante su método 'Open' con una cadena de conexión que especifica la conexión como una lista de pares clave-valor (por ejemplo: "
Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"). [ 8 ] El inicio de esta cadena debe identificar el tipo de conexión al almacén de datos que requiere el objeto de conexión. Debe ser:- un proveedor OLE DB (por ejemplo SQLOLEDB), utilizando la sintaxis "proveedor="
- un nombre de archivo, utilizando la sintaxis "nombre de archivo="
- un proveedor y servidor remotos (ver RDS ), utilizando la sintaxis "Proveedor remoto=" y "Servidor remoto="
- una URL absoluta , utilizando la sintaxis "URL=" [ 9 ]
- Comando: Después de que el objeto de conexión establece una sesión con la fuente de datos, se envían instrucciones al proveedor de datos a través del objeto de comando. El objeto de comando puede enviar consultas SQL directamente al proveedor mediante la propiedad CommandText , enviar una consulta parametrizada o un procedimiento almacenado mediante un objeto Parameter o una colección Parameters , o ejecutar una consulta y devolver los resultados a un objeto de conjunto de datos mediante el método Execute . Existen otros métodos que se pueden usar en el objeto Command relacionados con otros objetos, como Stream, RecordSet o Connection. [ 10 ]
- Conjunto de registros: Un conjunto de registros es un grupo de registros y puede provenir de una tabla base o ser el resultado de una consulta a la tabla. El objeto RecordSet contiene una colección Fields y una colección Properties . [ 11 ] La colección Fields es un conjunto de objetos Field, que son las columnas correspondientes en la tabla. La colección Properties es un conjunto de objetos Property, que define una funcionalidad particular de un proveedor OLE DB. El RecordSet tiene numerosos métodos y propiedades para examinar los datos que contiene. [ 12 ] Los registros se pueden actualizar en el conjunto de registros cambiando los valores en el registro y luego llamando al método
UpdateoUpdateBatch. Agregar nuevos registros se realiza a través de laAddNewfunción y luego llamando al métodoUpdateoUpdateBatch. [ 13 ] 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 no se puede realizar la eliminación, como debido a violaciones en la integridad referencial , entonces el conjunto de registros permanecerá en modo de edición después de la llamada alUpdatemétodo. El programador debe llamar explícitamente a laCancelUpdatefunción para cancelar la actualización. Además, ADO puede revertir transacciones (si es compatible) y cancelar actualizaciones por lotes. [ 14 ] Los conjuntos de registros también se pueden actualizar de tres maneras: mediante una actualización inmediata, mediante una actualización por lotes, [ 15 ] o mediante el uso de transacciones:- Inmediato: El conjunto de registros se bloquea mediante el
adLockOptimisticbloqueoadLockPessimistic. Los datos se actualizan en la fuente de datos después de que se modifica el registro yUpdatese llama al método. - Lote: El conjunto de registros se bloquea
adLockBatchOptimisticy cada vezUpdateque se llama, los datos se actualizan en un búfer temporal. Finalmente, cuandoUpdateBatchse llama, los datos se actualizan completamente en la fuente de datos. Esto tiene la ventaja de que todo se realiza en memoria, y si ocurre un problema,UpdateCancelse llama y las actualizaciones no se envían a la fuente de datos. - Transacción: Si el proveedor OLE DB lo permite, se pueden usar transacciones
BeginTrans. Para iniciar la transacción, el programador invoca el método y realiza las actualizaciones necesarias. Cuando todas se han completado, el programador invoca elCommitTransmétodo.RollbackTransSe puede invocar para cancelar cualquier cambio realizado dentro de la transacción y revertir la base de datos al estado anterior al inicio de la transacción [ 16 ].
- Inmediato: El conjunto de registros se bloquea mediante el
- Registro: Este objeto representa un registro en la base de datos y contiene una colección de campos. Un RecordSet consta de una colección de objetos Record. [ 17 ]
- Flujo: Un flujo, utilizado principalmente en un objeto RecordSet, es un medio para leer y escribir un flujo de bytes. [ 18 ] Se utiliza principalmente para guardar un conjunto de registros en formato XML, [ 19 ] para enviar comandos a un proveedor OLE DB como alternativa al objeto CommandText y para contener el contenido de un archivo binario o de texto.
- Parámetro: Un parámetro es un medio para alterar el comportamiento de una funcionalidad común; por ejemplo, a un procedimiento almacenado se le pueden pasar diferentes parámetros dependiendo de lo que se deba hacer; estos se denominan comandos parametrizados . [ 20 ]
- Campo: Cada objeto Record contiene muchos campos, y un objeto RecordSet también tiene un objeto Field correspondiente. El objeto Field del objeto RecordSet se corresponde con una columna de la tabla de la base de datos a la que hace referencia. [ 21 ]
- Propiedad: Este objeto es específico del proveedor OLE DB y define una capacidad que el proveedor ha implementado. Un objeto de propiedad puede ser una propiedad integrada (una propiedad bien definida implementada por ADO y, por lo tanto, no se puede modificar) o una propiedad dinámica (definida por el proveedor de datos subyacente y que se puede cambiar [ 22 ]).
- Error: Cuando se produce un error del proveedor OLE DB durante el uso de ADO, se crea un objeto Error en la colección Errors. [ 23 ] Sin embargo, otros errores no se almacenan en un objeto Error. Por ejemplo, cualquier error que se produzca al manipular datos en un objeto RecordSet o Field se almacena en una propiedad Status. [ 24 ] [ 25 ]
ADO.NET
ADO.NET es la última versión de ADO (posterior a ADO 2.8, ahora conocida como ADO Classic) y forma parte del conjunto MDAC 2.8 junto con ADO Classic. Está basado en Microsoft .NET . Aunque a veces se considera un paso evolutivo respecto a ADO, Microsoft introdujo 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 de objetos ya no se basa en 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 ADO Recordset, el diseño del Dataset promueve el uso de datos desconectados. Conceptualmente, un objeto Dataset puede considerarse una pequeña base de datos relacional en memoria que permite la manipulación de datos en cualquier dirección. Para propagar los cambios 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, siendo reemplazados por un objeto DataReader , que se utiliza para procesar eficientemente una lista grande de resultados, un registro a la vez, sin almacenarlos. [ 26 ]
Componentes obsoletos y en desuso
MDAC es un marco de componentes en constante evolución. Por ello, varios componentes que formaban parte de él han sido descontinuados o eliminados por completo.
Motor de base de datos Jet y JRO
Jet significa 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 interfaz única que otros programas podían usar para acceder a las bases de datos de Microsoft. Jet también proporcionaba soporte para 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 fue reemplazado por SQL Server Express .
Jet constaba de tres módulos. Uno de ellos era el controlador ISAM nativo de Jet, una biblioteca de vínculos dinámicos (DLL) que permitía manipular directamente archivos de base de datos de Microsoft Access (MDB), una forma modificada de una base de datos ISAM ( Método de Acceso Secuencial Indexado ). Otro módulo eran los controladores ISAM , DLL que permitían el acceso a bases de datos ISAM, como 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 Microsoft Jet OLE DB 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 ].
MSDASQL y Oracle ODBC
El proveedor Microsoft OLE DB para ODBC, o MSDASQL, era un proveedor OLE DB que permitía el acceso de objetos de datos ActiveX a bases de datos a través de cualquier controlador ODBC. Microsoft proporcionó varios proveedores OLE-DB (para el Servicio de indexación, Active Directory , Jet, SQL Server, Oracle ( MSDAORA) [ 28 ] y Publicación en Internet); sin embargo, a menos que se indicara lo contrario, ADO utilizaba MSDASQL como proveedor predeterminado. Después de MDAC 2.5, tanto el controlador ODBC de Oracle como MSDASQL admitían Oracle 7 y admitían parcialmente Oracle 8i. Las características que no eran compatibles eran:
- Tipos de datos de Oracle CLOB , BLOB , BFILE , NCHAR , NCLOB y NVARCHAR2
- Compatibilidad con Unicode para Oracle 7.x y 8i.
- múltiples instancias de cliente de Oracle
- uniones externas anidadas
Microsoft inicialmente dejó de dar soporte al componente MSDASQL para sus sistemas operativos de 64 bits [ 29 ] y el controlador ODBC de Microsoft Oracle fue posteriormente reemplazado por un proveedor Oracle administrado de .NET, que admitía Oracle 9i. [ 30 ] Sin embargo, Windows Server 2008 y Windows Vista SP1 incluyen una versión de 64 bits de MSDASQL.
Servicios de datos remotos (RDS)
Los Servicios de Datos Remotos (RDS) permitían recuperar un conjunto de datos del servidor, que el cliente modificaba de alguna manera y luego enviaba de vuelta al servidor para su posterior procesamiento. [ 31 ] Con la popularización de Transact-SQL , que extiende SQL con construcciones de programación como bucles y sentencias condicionales, esto se volvió menos necesario y finalmente se dejó de usar 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 . [ 3 ]
SQLXML
SQLXML fue diseñado para SQL Server 2000, pero quedó obsoleto con MDAC 2.6. Permitía visualizar la base de datos relacional de Microsoft mediante XPath y mostrar los datos como un archivo XML . Si bien no se ha declarado obsoleto, se eliminó de versiones posteriores de MDAC, aunque Microsoft lo ofrece como componente descargable y lo admite en sus sistemas operativos de 64 bits.
Componentes obsoletos
Microsoft ha eliminado por completo varios componentes de MDAC, los cuales ya no cuentan con soporte. Estos son:
- ESQL/C: SQL embebido (también conocido como E-SQL o ESQL/C) es una forma de usar SQL al programar en Visual C. Microsoft dejó de brindar soporte para esto después del lanzamiento de SQL Server 6.5, aunque sí cedió parte del entorno de ejecución de ESQL/C a una empresa llamada Micro Focus , que desarrolla compiladores y herramientas COBOL [ 32 ].
- DAO: DAO, u Objetos de Acceso a Datos, era una interfaz orientada a objetos creada por Microsoft que permitía a las primeras versiones de Microsoft Access y Visual Basic acceder al motor de base de datos Jet . Posteriormente (en la versión 3.5) pudo omitir por completo el motor Jet y acceder directamente a las fuentes de datos ODBC . [ 33 ]
- RDO: Los objetos de datos remotos, o RDO, eran una tecnología de Microsoft que permitía la creación de interfaces que llamaban directamente a ODBC. La versión 2.0 de RDO fue la última desarrollada por Microsoft.
- DB-Library: una API basada en C que permitía a una aplicación interactuar con SQL Server. No será compatible con ningún producto posterior a SQL Server 2000, y no se añadieron nuevas funciones después de SQL Server 6.5.
Historia
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 en cada versión.
MDAC 1.0
MDAC 1.0 se lanzó por primera vez en agosto de 1996. [ 34 ] Según Microsoft, "MDAC 1.0 existía más como un concepto que como un programa de configuración independiente y coordinado". La pila de MDAC 1.0 consistía en ODBC 3.0, OLE DB 1.1, ADO 1.0 y el 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: el Advanced Data Connector se distribuyó con Internet Information Server (IIS) 3.0 y como un archivo cab descargable ; OLE DB 1.1 y ADO 1.0 se distribuyeron con el SDK de OLE DB 1.1, que venía con Visual Studio 97 y también era descargable. [ 35 ] MDAC 1.0 venía con Active Server Pages, que a su vez venía con IIS 3.0, y también venía con Visual InterDev 1.0. [ 34 ]
MDAC 1.5
MDAC 1.5 se lanzó entre septiembre de 1997 y marzo de 1998, e implicó un mecanismo de distribución más centralizado que MDAC 1.0. Se lanzó con Microsoft Internet Explorer 4.0, el SDK de cliente de Internet 4.0 y a través de un CD-ROM entregado en la Conferencia de Desarrolladores Profesionales (PDC) de 1997. Hubo cinco versiones de MDAC 1.5:
- MDAC 1.5 (versión inicial): incluido con Internet Explorer 4.0 y el SDK del cliente de Internet.
- MDAC 1.5a: descargable desde el sitio web de Microsoft.
- MDAC 1.5b: venía con el paquete de opciones de Windows NT 4.0 y Office 97.
- MDAC 1.5c: solucionó problemas con la gestión de subprocesos de ADO y la agrupación de conexiones ODBC, y se distribuyó a través del sitio web de Microsoft. Solo incluía los componentes de tiempo de ejecución de ADO/MDAC.
- MDAC 1.5d: venía incluido con Windows 98 e Internet Explorer 4.01 Service Pack 1. [ 34 ]
Las diferentes versiones de MDAC 1.5 consistían en:
- ODBC 3.5
- OLE DB 1.5
- ADO 1.5
- Servicio de datos remotos 1.5, que reemplazó al Conector de datos avanzado. [ 35 ]
Esta versión de MDAC presentaba una vulnerabilidad de seguridad que la hacía susceptible a un ataque de escalada de privilegios . Dicha vulnerabilidad permitía que los sistemas con IIS y MDAC instalados otorgaran a un usuario web no autorizado la capacidad de ejecutar comandos de shell en el sistema IIS como un usuario con privilegios. Esto permitía al atacante utilizar MDAC para tunelizar solicitudes de datos SQL y otras solicitudes ODBC a través de la conexión pública a una red privada de back-end en un sistema IIS conectado a Internet con múltiples interfaces de red. También permitía al usuario obtener acceso no autorizado a archivos protegidos y no publicados en el sistema IIS [ 36 ].
MDAC 1.5 fue la última versión del componente de acceso a datos compatible con Windows NT 3.51 SP5.
MDAC 2.0
MDAC 2.0 se distribuyó con el SDK de Acceso a Datos 2.0 e incluyó el contenido de MDAC 1.5, el SDK de ODBC 3.5 y el SDK de OLE DB 1.5, así como la especificación OLE DB para OLAP . También incluyó muchas actualizaciones del producto principal, [ 35 ] incluyendo una función de seguridad añadida a RDS que impedía su uso malicioso en un servidor IIS. [ 37 ] [ 38 ] [ 39 ] Esta versión se incluyó en Windows NT 4.0 SP4, [ 34 ] y también en Visual Studio 6.0, que incluía el SDK completo de Acceso a Datos. [ 35 ]
MDAC 2.1
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 general a través de la World Wide Web . MDAC 2.1 SP2 se distribuyó desde el sitio web de Microsoft. Los componentes incluidos en la versión 2.1 fueron:
- ADO 2.1
- RDS 2.1
- OLE DB 2.1
- El proveedor OLE DB para ODBC, SQL Server y Oracle
- JRO 2.1
- un conductor de avión
- RDO. [ 34 ]
Esta versión presentaba vulnerabilidades de seguridad que permitían que un búfer sin control realizara un ataque con privilegios elevados. Este problema se descubrió tiempo después y afectó a MDAC 2.1, 2.5 y 2.6, siendo corregido en un parche posterior [ 40 ] [ 41 ].
MDAC 2.5
MDAC 2.5 se lanzó el 17 de febrero de 2000 y se distribuyó con Windows 2000. Los Service Packs de MDAC se lanzaron simultáneamente con los Service Packs de Windows 2000 y también se distribuyeron a través del sitio web de Microsoft. Se lanzaron tres Service Packs. Los componentes incluidos en la versión 2.5 fueron:
- ADO 2.5
- ADO MD 2.5
- ADOX 2.5
- RDS 2.5
- OLE DB 2.5
- Muchos proveedores de OLE DB
- JRO 2.5
- ODBC 3.51
- muchos controladores ODBC
- muchos pilotos de Jet. [ 34 ]
Se encontraron varios problemas en esta versión de MDAC. Al usar OLE DB Session Pooling, Microsoft COM+ intentaba cargar y descargar OLE DB continuamente, y podía surgir un conflicto que provocaba que OLE DB Session Pooling se ejecutara al 100 % de uso de CPU. Esto se solucionó posteriormente. [ 42 ] Microsoft publicó una lista completa de errores corregidos en MDAC 2.5 Service Pack 2 y MDAC 2.5 Service Pack 3. [ 43 ] [ 44 ] También existía una vulnerabilidad de seguridad (que se solucionó posteriormente) por la cual se encontró un búfer sin comprobar en el controlador de SQL Server. Este fallo se introdujo en MDAC 2.5 SP2.
MDAC 2.6
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, Microsoft Jet, Microsoft Jet OLE DB Provider y los controladores de base de datos de escritorio ODBC no se incluyeron. En su lugar, estos podían instalarse manualmente. [ 46 ] Microsoft también publicó una alerta advirtiendo que MDAC 2.6 no debería instalarse 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 a través de la instalación de otro programa, puede causar una falla catastrófica del Agente SQL Server u otros servicios de SQL Server". [ 47 ] Este problema afectó a Backup Exec 9.0 de Veritas Software para Windows Servers, 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
MDAC 2.7 se lanzó en octubre de 2001 a través del sitio web de Microsoft. En abril de 2002 se publicó una actualización con el lanzamiento de Windows XP, también a través del sitio web de Microsoft. La versión 2.7 estaba disponible en inglés estadounidense , 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, neerlandé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 la compatibilidad con el sistema operativo de 64 bits de Microsoft, sin embargo, también se eliminó la compatibilidad con Banyan VINES de esta versión de MDAC. Hubo varios problemas conocidos: [ 49 ] MDAC 2.7 continuó causando problemas de conectividad en servidores en clúster que ejecutaban Microsoft SQL Server 6.5 o SQL Server 7.0, sin que Microsoft proporcionara ninguna solución alternativa. Al crear o configurar nombres de origen de datos (DSN) ODBC utilizando el controlador ODBC de Microsoft SQL Server, el protocolo de la biblioteca de red podría cambiar inesperadamente a TCP/IP , incluso si el DSN estaba configurado para usar tuberías con nombre . [ 50 ] Este problema fue descubierto por el reportero de InfoWorld Randall C. Kennedy , quien identificó que el cambio en realidad se hizo en MDAC 2.6 pero nunca se documentó. Se descubrió al probar cargas de trabajo de bases de datos cliente/servidor en una computadora con Windows XP; InfoWorld afirma que, aunque la utilización general de la CPU del servidor aumentó solo un 8 por ciento usando TCP/IP, los cambios de contexto por segundo cayeron en más del 150 por ciento (lo cual es imposible porque entonces tendrías una tasa de cambio de contexto negativa; la caída es del 33% o del 60% dependiendo del planeta en el que se encontraba el autor al momento de escribir) para una carga de trabajo de 10 usuarios. No les impresionó que un cambio funcional fundamental en el comportamiento predeterminado de Net-Lib ocurriera 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 usar certificados que encuentra en la computadora local, sin embargo, si hay más de un certificado disponible, no sabe cuál usar. [ 52 ] Al intentar usar Microsoft Analysis Services 2000 RTM, a veces aparecía un error al intentar explorar 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 resolvió varios problemas de seguridad para 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, utilizada para conectarse a fuentes de datos, contenía un búfer sin comprobar. [ 55 ] Otra vulnerabilidad que se corrigió permitía a un atacante responder a un mensaje de descubrimiento de SQL Server difundido por los clientes con un paquete especialmente diseñado que podía provocar un desbordamiento de búfer. [ 56 ] Se descubrió otro fallo que permitía ejecutar código de forma remota cuando el atacante respondía a la difusión con otro paquete especialmente diseñado. [ 57 ]
MDAC 2.8
MDAC 2.8 se lanzó en agosto de 2003 y se distribuyó con Microsoft Windows Server 2003 , así como en el sitio web de Tecnologías de Acceso a Datos de Microsoft . No introdujo ninguna característica nueva al producto, pero corrigió varios 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" en el que se podía explotar el RDS para obtener acceso no autorizado al sistema [ 58 ] y se impuso una nueva restricción a la longitud de la cadena de consulta Shape. [ 59 ] También hubo varios cambios en el Administrador de ODBC. [ 60 ]
El 23 de mayo de 2005, Brad Rhodes (Director de Programa de Tecnologías de Acceso a Datos de Microsoft) anunció que MDAC 2.8 SP1 era la última versión redistribuible independiente de MDAC que Microsoft lanzaría. MDAC ahora es un componente oficial del sistema operativo de Microsoft, aunque seguirán proporcionando correcciones de errores y seguridad para las versiones anteriores de la versión distribuible web. [ 61 ] [ 62 ] 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 creó para ser independiente de MDAC, que ahora depende del estado del sistema operativo ; un desarrollador ahora enlaza con 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. [ 63 ]
Windows 7 SP1 ha roto 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 (incluidas Windows 7 RTM, Vista y XP). [ 64 ] Microsoft ha proporcionado soluciones para solucionar este problema en algunas aplicaciones, pero las aplicaciones VBA siguen afectadas. [ 65 ] La solución para este problema se publicó en febrero de 2012. [ 66 ]
Windows DAC 6.0
Windows Vista ya no utilizará MDAC, sino 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 prácticamente equivalente en su totalidad a MDAC 2.8». [ 67 ]
Comprobación de versiones
Existen dos maneras de comprobar la versión de MDAC instalada en un equipo. Para Windows 2000, Windows XP y Windows Server 2003, una forma es mediante el programa Comprobador de componentes 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\FullInstallVeren el registro de Windows . Microsoft señala que esta información puede ser incorrecta para versiones de MDAC anteriores a la 2.1 al compararla con las versiones de los archivos MDAC instalados en el sistema [ 68 ].
Referencias
- ↑ Kalen Delaney (2000), "Inside Microsoft SQL Server 2000" , 3.ª edición. Redmond : Microsoft Press, págs. 70-74. ISBN 9780735609983
- ↑ MSDN, "Creación y configuración de archivos de enlace de datos universal (.udl)" . Microsoft. Archivado el 17 de febrero de 2007; consultado el 28 de abril de 2007.
- 1 2 3 Prash Shirolkar, Alyssa Henry, Stephen Pepitone, Acey J. Bunch y David Schwartz (septiembre de 2011). "Hoja de ruta de las tecnologías de acceso a datos" , Microsoft Corporation . Archivado el 8 de noviembre de 2017; consultado el 1 de marzo de 2018.
- ↑ MSDN, "Colección de campos" . Microsoft. Archivado el 7 de septiembre de 2012; consultado el 19 de septiembre de 2005.
- ↑ MSDN, "Colección de propiedades" . Microsoft. Archivado el 6 de junio de 2011; consultado el 19 de septiembre de 2005.
- ↑ MSDN, "Colección de parámetros" . Microsoft. Archivado el 6 de junio de 2011; consultado el 19 de septiembre de 2005.
- ↑ MSDN, "Colección de errores" . Microsoft. Archivado el 6 de junio de 2011; consultado el 19 de septiembre de 2005.
- ↑ MSDN, "ADO 2.8: Uso de un objeto de conexión" . Microsoft. Archivado el 7 de septiembre de 2009; consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Cadena de conexión ADO" . Microsoft. Consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Descripción general del objeto de comando" . Microsoft. Archivado el 6 de junio de 2011; consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Examinando datos" . Microsoft. Archivado el 6 de junio de 2011; consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Referencia de la API de ADO 2.8: Propiedades, métodos y eventos del objeto Recordset" . Microsoft. Archivado el 4 de febrero de 2008.
- ↑ MSDN, "Edición de datos" . Microsoft. Archivado el 6 de junio de 2011; consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Eliminar registros mediante el método Delete" . Microsoft. Archivado el 6 de junio de 2011; consultado el 10 de septiembre de 2005.
- ↑ MSDN, "Actualización y persistencia de datos" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Procesamiento de transacciones" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Objeto de registro" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Registros y flujos" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Streams and Persistence" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Objeto de parámetro" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Objeto de campo" . Microsoft. Archivado el 6 de junio de 2011; consultado el 12 de septiembre de 2005.
- ↑ MSDN, "Objeto de propiedad" . Microsoft. Archivado el 6 de junio de 2011; consultado el 13 de septiembre de 2005.
- ↑ MSDN, "Gestión de errores" . Microsoft. Archivado el 6 de junio de 2011; consultado el 18 de septiembre de 2005.
- ↑ MSDN, "Información sobre errores relacionados con campos" . Microsoft. Archivado el 6 de junio de 2011; consultado el 18 de septiembre de 2005.
- ↑ MSDN, "Información sobre errores relacionados con conjuntos de registros" . Microsoft. Archivado el 6 de junio de 2011; consultado el 18 de septiembre de 2005.
- ↑ Doug Rothaus y Mike Pizzo (diciembre de 2001), "ADO.NET para el programador ADO" . MSDN, Microsoft. Archivado el 2 de marzo de 2011; consultado el 22 de septiembre de 2005.
- ↑ Centro para desarrolladores de .NET Framework, "Componentes obsoletos de Windows DAC/MDAC" . MSDN, Microsoft. Archivado el 14 de septiembre de 2008; consultado el 5 de agosto de 2005.
- ↑ Bill Hamilton (2008), "ADO.NET 3.5 Cookbook" , 2.ª edición. Cookbook Series, O'Reilly Media, Inc., págs. 27. Consultado el 9 de octubre de 2012. "[...] utilice el [...] proveedor Oracle OLE DB (MSDAORA) para acceder a los datos de Oracle." ISBN 9780596101404
- ↑ MSDN, "Proveedor OLE DB de Microsoft para ODBC" . Microsoft. Archivado el 6 de junio de 2011; consultado el 30 de julio de 2005.
- ↑ Microsoft (25 de agosto de 2004), "INFO: Limitaciones del controlador ODBC de Microsoft Oracle y del proveedor OLEDB . Archivado el 29 de enero de 2005; consultado el 4 de agosto de 2005.
- ↑ MSDN, "Servicio de datos remotos (RDS)" . Microsoft. Archivado el 14 de mayo de 2011; consultado el 11 de agosto de 2005.
- ↑ Kalen Delaney (2000), "Inside Microsoft SQL Server 2000" , 3.ª edición. Redmond : Microsoft Press, 65 págs. ISBN 9780735609983.
- ↑ Christine Solomon (1997), "Manual del desarrollador de Microsoft Office 97" . Redmond : Microsoft Press, págs. 195-200. ISBN 9781572316065
- ^ Christian Koller, " Versiones ADO y MDAC " . AspHeute.com. Archivado el 15 de agosto de 2006; consultado el 1 de julio de 2005 (en alemán) .
- 1 2 3 4 Microsoft (23 de enero de 2007). "INFO: ¿Qué son MDAC, DA SDK, ODBC, OLE DB, ADO, RDS y ADO/MD?" Archivado el 4 de septiembre de 2009; consultado el 1 de julio de 2005.
- ↑ TechNet, "Programa de seguridad de Microsoft: Preguntas frecuentes: Boletín de seguridad de Microsoft (MS99-025)" . Microsoft. Archivado el 9 de mayo de 2005; consultado el 6 de julio de 2005.
- ↑ Microsoft (30 de septiembre de 2003, "PRB: Mensajes de error del controlador RDS debido a la configuración de seguridad" . Archivado el 19 de febrero de 2005; consultado el 6 de julio de 2005.
- ↑ TechNet (17 de julio de 1998), "Programa de seguridad de Microsoft: Boletín de seguridad de Microsoft (MS98-004)" . Microsoft. Archivado el 9 de abril de 2004; consultado el 6 de julio de 2005.
- ↑ Vulnerabilidades y exposiciones comunes (2 de junio de 2000), "CVE-1999-1011" . Archivado el 7 de enero de 2001.
- ↑ Microsoft. "Componentes de acceso a datos: Revisión de seguridad para Q329414" . Archivado el 23 de noviembre de 2002.
- ↑ TechNet (20 de noviembre de 2002), "Boletín de seguridad de Microsoft MS02-06" . Microsoft. Archivado el 18 de abril de 2004; consultado el 6 de julio de 2005.
- ↑ Microsoft (11 de octubre de 2005), "La agrupación de sesiones OLE DB provoca un uso del 100 % de la CPU (MDAC 2.5)" . Archivado el 26 de septiembre de 2006; consultado el 6 de julio de 2005.
- ↑ Microsoft (13 de junio de 2001), "INFO: Lista de errores corregidos en MDAC 2.5 Service Pack 2" . Archivado el 15 de noviembre de 2004.
- ↑ Microsoft (1 de junio de 2003), "INFO: Lista de errores corregidos en MDAC 2.5 Service Pack 3 (SP3)" . Archivado el 15 de noviembre de 2004.
- ↑ Microsoft (19 de julio de 2004) "Manifiesto de lanzamiento para MDAC 2.6 (2.60.6526.3)" . Archivado el 19 de octubre de 2005; consultado el 6 de julio de 2005.
- ↑ Microsoft (13 de octubre de 2004), "MDAC versión 2.6 y posteriores no contienen controladores ODBC Jet ni Desktop" . Archivado el 19 de octubre de 2004; consultado el 6 de julio de 2005.
- ↑ Microsoft (22 de septiembre de 2004), "MDAC 2.6 o posterior no debe instalarse en clústeres de SQL Server 7.0" . Archivado el 20 de octubre de 2004; consultado el 6 de julio de 2005.
- ↑ Veritas (25 de junio de 2003), "VERITAS Backup Exec 9.0 para servidores Windows no debe instalarse en un clúster de Microsoft SQL Server 7.0" . Archivado el 11 de febrero de 2005.
- ↑ Microsoft (28 de mayo de 2004), "Manifiesto de lanzamiento para MDAC 2.7 Refresh (2.70.9001.0)" . Archivado el 17 de noviembre de 2004; consultado el 10 de abril de 2019.
- ↑ Microsoft (5 de diciembre de 2003), "PRB: Configuración de DSN con bibliotecas de red de SQL Server" . Archivado el 19 de octubre de 2004.
- ↑ Randall C. Kennedy (21 de noviembre de 2001), "No es un error, es una característica" . InfoWorld . Archivado el 10 de marzo de 2007.
- ↑ Microsoft (3 de diciembre de 2003), "La instalación de SQL Server 2000 o las conexiones locales fallan con el mensaje de error "Error de seguridad SSL: ConnectionOpen (SECDoClientHandshake())" . Archivado el 17 de noviembre de 2004.
- ↑ Microsoft (24 de abril de 2003), "CORRECCIÓN: No se pueden explorar cubos ni modelos de minería de procesos después de instalar Analysis Services 2000 RTM" . Archivado el 17 de mayo de 2005.
- ↑ Microsoft (2 de septiembre de 2004), "PRB: Es posible que la reversión de MDAC falle en Windows 95, Windows 98 y Windows Millennium Edition" . Archivado el 19 de octubre de 2004.
- ↑ TechNet (31 de julio de 2002), Boletín de seguridad de Microsoft MS02-040: Un búfer sin verificar en la función MDAC podría permitir la vulneración del sistema (Q326573) . Microsoft. Archivado el 11 de abril de 2004.
- ↑ TechNet (20 de agosto de 2003), "Boletín de seguridad de Microsoft MS03-033: Un búfer sin verificar en la función MDAC podría comprometer la seguridad del sistema (823718)" . Microsoft. Archivado el 6 de mayo de 2004.
- ↑ TechNet (1 de abril de 2004), "Boletín de seguridad de Microsoft MS04-003: Un desbordamiento de búfer en la función MDAC podría permitir la ejecución de código (832483)" . Microsoft. Archivado el 14 de abril de 2004.
- ↑ Microsoft (25 de abril de 2003), "INFO: El archivo Handunsf.reg se ha eliminado en la configuración de MDAC 2.8 Redist por motivos de seguridad" . Archivado el 19 de octubre de 2004.
- ↑ Microsoft (3 de septiembre de 2004), "CORRECCIÓN: Error "El argumento pasado al servicio de modelado de datos no es válido" después de aplicar MDAC 2.8" . Archivado el 19 de octubre de 2004.
- ↑ Microsoft (15 de mayo de 2003), "INFO: Cambios en el administrador de ODBC en MDAC 2.8" . Archivado el 21 de octubre de 2004.
- ↑ Brad Rhodes (23 de mayo de 2005), "El fin del paquete redistribuible de MDAC" . MSDN, Microsoft. Consultado el 11 de agosto de 2005.
- ↑ Microsoft (24 de enero de 2005) "Estrategia de lanzamiento para los componentes de acceso a datos de Microsoft" . Archivado el 20 de febrero de 2006; consultado el 11 de agosto de 2005.
- ↑ Acey J. Bunch (26 de abril de 2005), "Introducción a SQL Native Client" . MSDN, Microsoft. Archivado el 24 de septiembre de 2005.
- ↑ EinmalIM (18 de febrero de 2011), "Cambio importante en los componentes COM de MDAC ADODB en Windows 7 Service Pack 1" . MSDN, Microsoft. Archivado el 26 de febrero de 2011; consultado el 9 de marzo de 2011.
- ↑ Microsoft (16 de marzo de 2011), "Una aplicación ADO que se vuelve a compilar en un equipo con Windows 7 Service Pack 1 no se ejecuta en sistemas operativos de versiones anteriores" . Archivado el 20 de marzo de 2011; consultado el 17 de marzo de 2011.
- ↑ Microsoft (14 de febrero de 2012), "Una aplicación basada en ADO compilada en Windows 7 SP1 o en Windows Server 2008 R2 SP1 no se ejecuta en versiones anteriores de Windows" . Archivado el 8 de marzo de 2012; consultado el 20 de abril de 2012.
- ↑ MSDN, "Preguntas frecuentes sobre Windows DAC/MDAC" . Archivado el 5 de junio de 2011; consultado el 12 de diciembre de 2006.
- ↑ Microsoft (18 de enero de 2005), "Cómo comprobar la versión de MDAC" . Archivado el 24 de diciembre de 2005; consultado el 29 de septiembre de 2005.
- ↑ Bob Beauchemin, Niels Berglund y Dan Sullivan (2004), "Primer vistazo a SQL Server 2005 para desarrolladores: Cambios del capítulo 11" . Archivado el 24 de marzo de 2006.
Lecturas adicionales
- MSDN, "Referencia de la API de ADO" . Microsoft. Archivado el 27 de septiembre de 2011; consultado el 3 de mayo de 2014.
- MSDN, "Guía del programador de ADO" . Microsoft. Archivado el 30 de septiembre de 2011; consultado el 3 de mayo de 2014.
Enlaces externos
- Centro MDAC de Microsoft
- Descargas de MDAC
- Historia de MDAC
- Interfaces de programación de aplicaciones de Microsoft