Componentes de acceso a datos de Microsoft: Microsoft Data Access Components

Componentes de acceso a datos de Microsoft
MDAC Architecture.svg
MDAC proporciona un marco uniforme para acceder a una variedad de fuentes de datos en su plataforma Windows
Desarrollador (es) Microsoft
Lanzamiento final
2.8 SP1 (2.81.1117.6) / mayo de 2005
Sistema operativo Windows 98 , Windows ME , Windows NT 4 , Windows 2000 , Windows XP , Windows Server 2003 , Windows 7 , Windows 10
Tipo Base de datos
Licencia Freeware
Sitio web msdn2 .microsoft .com / en-us / data / aa937729 .aspx

Microsoft Data Access Components ( MDAC ; también conocido como Windows DAC ) es un marco de tecnologías de Microsoft interrelacionadas que permite a los programadores una forma uniforme y completa de desarrollar aplicaciones que pueden 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 Microsoft 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 los objetos de datos remotos .

La primera versión de MDAC se lanzó 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. Posteriormente, Microsoft lanzó actualizaciones a 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 llevaron a ataques como un ataque de privilegios escalados , aunque las vulnerabilidades generalmente se solucionaron en versiones posteriores y con bastante rapidez. La versión actual es 2.8 Service Pack 1, pero el producto ha tenido muchas versiones diferentes y muchos de sus componentes han sido obsoletos y reemplazados por tecnologías más nuevas 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, todos los cuales son específicos de Windows, excepto ODBC (que está disponible en varias plataformas). La arquitectura MDAC puede verse 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 el 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 se incluye en MDAC. Se recomienda a los desarrolladores de aplicaciones de Windows que utilicen ADO o ADO.NET para el acceso a los datos, con la ventaja de que los usuarios del programa de aplicación no están limitados en la elección de la arquitectura de la base de datos, excepto que debe ser compatible con MDAC. Naturalmente, los desarrolladores todavía tienen la opción de 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 usando muchos protocolos de red diferentes . Aunque Net-Lib es específico de SQL Server, Microsoft lo 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 del sistema operativo 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 tiene soporte para una capa de sesión en su pila de protocolos. Hay dos tipos generales de Net-Lib: el primario y el secundario. El principal Net-Lib consiste en un Súper Socket Net-Lib y la memoria compartida Net-Lib, mientras que hay numerosas secundarias Net-libs, incluyendo TCP / IP y canalizaciones con nombre bibliotecas de red (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 da una identidad). El proveedor Microsoft OLE DB para SQL Server (SQLOLEDB) se comunica a través de Net-Libs primarios.

El Super Socket Net-Lib se ocupa de las comunicaciones entre computadoras y coordina los Net-Libs secundarios, aunque el Net-Lib secundario de TCP / IP es una excepción, ya que llama directamente a la API de Windows Sockets 2 . El Banyan VINES , AppleTalk , ServerNet , IPX / SPX , Giganet , y RPC Net-libs fueron retirados de MDAC 2.5 en adelante. El enrutador de la biblioteca de red tenía el trabajo de administrar todos estos protocolos, sin embargo, ahora el enrutador solo administra las tuberías con nombre secundario Net-Lib. El Super Socket Net-Lib también maneja el cifrado de datos mediante el uso de la API de SSL de Windows .

Shared Memory Net-Lib, por otro lado, administra las conexiones entre múltiples 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 cifrar 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 puede admitir la suplantación del contexto de seguridad de un usuario que ha iniciado sesión para protocolos que admiten conexiones autenticadas (llamadas conexiones confiables ). Esto permite que Net-Lib proporcione 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.

OLE DB

OLE DB (también llamado OLEDB u OLE-DB) permite que las aplicaciones MDAC accedan a diferentes tipos de ([datos]) almacenes de manera uniforme. Microsoft ha utilizado esta tecnología para separar la aplicación de los datos que pueden almacenar en el sitio web el almacén de datos al que necesita acceder. Esto se hizo porque diferentes aplicaciones necesitan 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 acceso 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 la base de datos utilizada por MDAC. Se pueden crear proveedores OLE DB 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 diferentes tecnologías de almacenamiento de datos pueden tener diferentes capacidades, los proveedores de 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 del almacén 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. Además, sin embargo, 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 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 atributos de conexión. Un usuario puede utilizar un cuadro de diálogo Propiedades de enlace 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 direccionamiento indirecto . Además, el cuadro de diálogo especifica varios proveedores de datos OLE DB alternativos para una variedad de aplicaciones de destino.

ODBC

Open Database Connectivity (ODBC) es una interfaz nativa a la que se accede a través de un lenguaje de programación (generalmente 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 separado para cada base de datos a la que se debe acceder. Las funciones de la API de ODBC las implementan 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. ODBC permite que los programas utilicen solicitudes SQL que accederán a las 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 comprende. Según Microsoft, "Después de SQL Server 2012, el controlador ODBC se actualizará para las características del 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".

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 colecciones y objetos 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:

  1. Campos: esta colección contiene un conjunto de objetos Field. La colección se puede utilizar en un objeto Recordset o en un objeto Record. En un objeto Recordset, cada uno de los objetos Field que componen la colección Fields corresponde a una columna en ese objeto Recordset. En un objeto de registro, un campo puede ser una URL absoluta o relativa que apunta a un espacio de nombres estructurado en árbol (utilizado para proveedores de datos semiestructurados como el proveedor Microsoft OLE DB para publicación en Internet) o como una referencia al objeto Stream predeterminado asociado con ese objeto Record.
  2. Propiedades: un objeto puede tener más de un objeto Propiedad, que se encuentran en la colección Propiedades del objeto.
  3. Parámetros: un objeto de comando puede tener varios comandos de parámetro para cambiar su comportamiento predefinido, y cada uno de los objetos de parámetro está contenido en la colección de parámetros del objeto de comando.
  4. Errores: todos los errores creados por el proveedor se pasan a una colección de objetos Error, mientras que la colección Errores en sí está contenida en un objeto Connection. Cuando una operación de ADO crea un error, la colección se borra y se crea un nuevo grupo de objetos Error en la colección.

Los objetos son:

  1. 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. Como 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 OLE DB. Un objeto de conexión se conecta al almacén de datos utilizando su método 'Abrir' 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';"). El inicio del cual debe identificar el tipo de conexión del 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 ), usando la sintaxis "Proveedor remoto =" y "Servidor remoto ="
    • una URL absoluta , utilizando la sintaxis "URL ="
  2. Comando: después de que el objeto de conexión establece una sesión con la fuente de datos, las instrucciones se envían al proveedor de datos a través del objeto de comando. El objeto de comando puede enviar consultas SQL directamente al proveedor a través del uso de la CommandText propiedad, enviar una consulta parametrizada o procedimiento almacenado mediante el uso de un parámetro objeto o parámetros de recolección o ejecutar una consulta y devolver los resultados a un objeto de conjunto de datos a través de la Ejecutar método. Hay varios otros métodos que se pueden utilizar en el objeto Command relacionados con otros objetos, como los objetos Stream, RecordSet o Connection.
  3. Juego de registros: un juego de registros es un grupo de registros y puede provenir de una tabla base o como resultado de una consulta a la tabla. El objeto RecordSet contiene una colección Fields y una colección Properties . La colección Fields es un conjunto de objetos Field, que son las columnas correspondientes de 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 existen dentro de él. Los registros se pueden actualizar en el conjunto de registros cambiando los valores en el registro y luego llamando al método Updateo UpdateBatch. La adición de nuevos registros se realiza a través de la AddNewfunción y luego llamando al método Updateo UpdateBatch. 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 , el conjunto de registros permanecerá en modo de edición después de la llamada al Updatemétodo. El programador debe llamar explícitamente a la CancelUpdatefunción para cancelar la actualización. Además, ADO puede revertir transacciones (si es compatible) y cancelar actualizaciones por lotes. Los conjuntos de registros también se pueden actualizar de una de estas tres formas: mediante una actualización inmediata, mediante una actualización por lotes o mediante el uso de transacciones:
    1. Inmediato: el juego de registros se bloquea mediante el bloqueo adLockOptimistico adLockPessimistic. Los datos se actualizan en la fuente de datos después de que se cambia el registro y Updatese llama al método.
    2. Lote: el juego de registros se bloquea usando adLockBatchOptimisticy cada vez que Updatese llama, los datos se actualizan en un búfer temporal. Finalmente, cuando UpdateBatchse llama, los datos se actualizan completamente en la fuente de datos. Esto tiene la ventaja de que todo se hace en la memoria, y si ocurre un problema, UpdateCancelse llama y las actualizaciones no se envían a la fuente de datos.
    3. Transacción: si el proveedor OLE DB lo permite, se pueden utilizar transacciones . Para iniciar la transacción, el programador invoca el BeginTransmétodo y realiza las actualizaciones necesarias. Cuando terminan, el programador invoca el CommitTransmétodo. RollbackTransse puede invocar para cancelar cualquier cambio realizado dentro de la transacción y revertir la base de datos al estado anterior a que comenzara la transacción
  4. 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.
  5. Secuencia: una secuencia, que se utiliza principalmente en un objeto RecordSet, es un medio para leer y escribir una secuencia de bytes. Se utiliza principalmente para guardar un juego de registros en formato XML, 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.
  6. Parámetro: Un parámetro es un medio de alterar el comportamiento de una función común, por ejemplo, un procedimiento almacenado puede tener diferentes parámetros pasados ​​dependiendo de lo que se deba hacer; estos se denominan comandos parametrizados .
  7. Campo: cada objeto Record contiene muchos campos y un objeto RecordSet también tiene un objeto Field correspondiente. El objeto Field del objeto RecordSet corresponde a una columna de la tabla de la base de datos a la que hace referencia.
  8. 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 incorporada ( es una propiedad bien definida implementada por ADO y, por lo tanto, no se puede alterar) o una propiedad dinámica , definida por el proveedor de datos subyacente y se puede cambiar
  9. Error: cuando se produce un error del proveedor OLE DB durante el uso de ADO, se creará un objeto Error en la colección Errores. Sin embargo, otros errores no entran en un objeto Error. Por ejemplo, cualquier error que ocurra al manipular datos en un objeto RecordSet o Field se almacena en una propiedad Status.

ADO.NET

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 ve como un paso evolutivo de ADO, Microsoft realizó algunos cambios estructurales fundamentales. ADO.NET se ejecuta a través de un proveedor administrado .NET, una versión modificada de un proveedor OLE DB diseñado específicamente para .NET. La estructura del objeto ya no se basa en un objeto Recordset. En su lugar, se utiliza un objeto de conjunto de datos para contener datos recopilados de varias fuentes. Esto es transparente para el programador. A diferencia del antiguo conjunto de registros ADO, el diseño del conjunto de datos promueve el uso de datos desconectados. Conceptualmente, un objeto de conjunto de datos 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 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 usa para procesar de manera eficiente una gran lista de resultados, un registro a la vez, sin almacenarlos.

Componentes obsoletos y obsoletos

MDAC es un marco de componentes en continua evolución. Como tal, ha habido varios componentes que anteriormente formaban parte de él, pero desde entonces han quedado obsoletos o se han eliminado por completo del marco.

Motor de base de datos Microsoft 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 otro software podía utilizar para acceder a las bases de datos de Microsoft. Jet también brindó 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. Desde entonces ha sido reemplazado por MSDE .

Jet tenía tres módulos. Uno era el controlador Native Jet ISAM , una biblioteca de vínculos dinámicos (DLL) de Jet que podía manipular directamente 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 fueron los Controladores ISAM , DLLs que permitían el acceso a las bases de datos ISAM, entre ellos se encuentran los archivos Xbase , Paradox , Btrieve y FoxPro . El módulo final fue la DLL de objetos de acceso a datos (DAO) , DAO permitió 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

MSDASQL y Oracle ODBC

El proveedor Microsoft OLE DB para ODBC, o MSDASQL, era un proveedor OLE DB para permitir el acceso de ActiveX Data Objects 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) y publicación en Internet), sin embargo, a menos que se indique lo contrario, ADO usó de forma predeterminada MSDASQL como proveedor predeterminado. Después de MDAC 2.5, tanto el controlador ODBC de Oracle como MSDASQL eran compatibles con Oracle 7 y con Oracle 8i parcialmente compatible. Las funciones que no fueron compatibles fueron:

Microsoft inicialmente desaprobó el componente MSDASQL para sus sistemas operativos de 64 bits y el controlador ODBC de Microsoft Oracle fue reemplazado más tarde por un proveedor de Oracle administrado .NET, que admitía Oracle 9i. Sin embargo, Windows Server 2008 y Windows Vista SP1 se envían con una versión de 64 bits de MSDASQL.

Servicios de datos remotos (RDS)

Los servicios de datos remotos (RDS) permitieron la recuperación de un conjunto de datos del servidor, que luego el cliente modificó de alguna manera y luego los envió de vuelta al servidor para su posterior procesamiento. Con la adopción popular de Transact-SQL , que amplía SQL con construcciones de programación como bucles y declaraciones condicionales, esto se volvió menos necesario y finalmente quedó en desuso 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 .

SQLXML

SQLXML se diseñó para SQL Server 2000, pero quedó obsoleto con MDAC 2.6. Permitió que XPath viera la base de datos relacional de Microsoft y permitió que los datos se pudieran ver como un archivo XML . En realidad, no se ha desaprobado, pero se ha eliminado de las versiones posteriores de MDAC, aunque Microsoft lo proporciona como un componente descargable y lo admitirá en sus sistemas operativos de 64 bits.

Componentes obsoletos

Microsoft ha eliminado por completo varios componentes de MDAC y ya no son compatibles. Ellos son:

  • ESQL / C: SQL incorporado (también conocido como E-SQL o ESQL / C) es una forma de usar SQL cuando se programa en Visual C. Microsoft dejó de admitir esto después del lanzamiento de SQL Server 6.5, aunque sí licenciaron algunos de los ESQL / C entorno de tiempo de ejecución a una empresa llamada Micro Focus , que desarrolla compiladores y herramientas COBOL
  • DAO: DAO, o Data Access Objects, eran una interfaz orientada a objetos creada por Microsoft que permitía que las primeras versiones de Microsoft Access y Visual Basic tuvieran acceso al motor de base de datos Jet . Más tarde (en la versión 3.5) pudo pasar por alto el motor Jet y acceder directamente a las fuentes de datos ODBC .
  • RDO: Remote Data Objects , o RDO, era 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 versión final desarrollada por Microsoft.
  • DB-Library: una API basada en C que permite que una aplicación interactúe con SQL Server. No será compatible con ningún producto después de SQL Server 2000 y no se agregaron características 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 para cada versión.

MDAC 1.0

MDAC 1.0 se lanzó por primera vez en agosto de 1996. Según Microsoft, "MDAC 1.0 existía más como un concepto que como un programa de instalación coordinado e independiente". 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: el conector de datos avanzado 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 SDK de OLE DB 1.1, que venía con Visual Studio 97 y también se podía descargar. 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.

MDAC 1.5

MDAC 1.5 se publicó entre septiembre de 1997 y marzo de 1998 e incluía un mecanismo de distribución más centralizado que MDAC 1.0. Fue lanzado con Microsoft Internet Explorer 4.0, Internet Client SDK 4.0 y mediante un CD-ROM distribuido en la Professional Developers Conference (PDC) de 1997 . Había cinco versiones de MDAC 1.5:

  • MDAC 1.5 (versión inicial): incluido con Internet Explorer 4.0 e Internet Client SDK.
  • MDAC 1.5a: descargable desde el sitio web de Microsoft
  • MDAC 1.5b: vino con Windows NT 4.0 Option Pack y Office 97
  • MDAC 1.5c: problemas solucionados con el subproceso ADO y la agrupación de conexiones ODBC y se distribuyó a través del sitio web de Microsoft. Solo vino con 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.

Las diferentes versiones de MDAC 1.5 consistieron en:

  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • Remote Data Service 1.5, que reemplazó al Advanced Data Connector.

Esta versión de MDAC tenía una falla de seguridad que la hacía vulnerable a un ataque de privilegios escalado . La vulnerabilidad provocó que los sistemas que tenían instalados tanto IIS como MDAC ofrecieran a un usuario web no autorizado la capacidad de ejecutar comandos de shell en el sistema IIS como usuario privilegiado. Esto permitió que el atacante usara MDAC para canalizar SQL y otras solicitudes de datos ODBC a través de la conexión pública a una red de back-end privada cuando se encontraba en un sistema IIS conectado a Internet con múltiples hosts . También permitió al usuario obtener acceso no autorizado a archivos seguros y no publicados en el sistema IIS.

MDAC 1.5 fue la última versión de componente de acceso a datos compatible con Windows NT 3.51 SP5.

MDAC 2.0

MDAC 2.0 se distribuyó con Data Access 2.0 SDK e incluía el contenido de MDAC 1.5, ODBC 3.5 SDK y OLE DB 1.5 SDK, y OLE DB para la especificación OLAP . También había incluido muchas actualizaciones para el producto principal, incluida una función de seguridad agregada al RDS que evitaba que se usara maliciosamente en un servidor IIS. Esta versión vino incluida en Windows NT 4.0 SP4, y también con Visual Studio 6.0, que vino con el SDK de acceso a datos completo.

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 en general a través de la red mundial . MDAC 2.1 SP2 se distribuyó desde el sitio web de Microsoft. Los componentes que se incluyeron con 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 jet
  • RDO.

Esta versión tenía vulnerabilidades de seguridad por las que un búfer no verificado podría permitir un ataque con privilegios elevados. Esto se encontró algún tiempo después y afectó a MDAC 2.1, 2.5 y 2.6 y se solucionó en un parche posterior.

MDAC 2.5

MDAC 2.5 se lanzó el 17 de febrero de 2000 y se distribuyó con Windows 2000 , y los service packs de MDAC se lanzaron en paralelo con los service packs de Windows 2000. También se distribuyeron a través del sitio web de Microsoft. Se lanzaron tres paquetes de servicios. Los componentes incluidos con 2.5 fueron:

  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • muchos proveedores OLE DB
  • JRO 2.5
  • ODBC 3.51
  • muchos controladores ODBC
  • muchos conductores de Jet.

Se encontraron varios problemas en esta versión de MDAC. Al utilizar la agrupación de sesiones OLE DB, Microsoft COM + intentaría cargar y descargar OLE DB de forma continua, y podría surgir un conflicto que provocara que la agrupación de sesiones OLE DB se ejecutara al 100% del uso de la CPU. Esto se solucionó más tarde. 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 luego se solucionó) por la cual se encontró un búfer sin verificar en el controlador de SQL Server. Este defecto 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 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 Microsoft SQL Server 2000 service packs y también se pueden descargar del sitio web de Microsoft.

A partir de esta versión de MDAC, no se incluyeron Microsoft Jet, Microsoft Jet OLE DB Provider y ODBC Desktop Database Drivers. En cambio, estos podrían instalarse manualmente. Microsoft también lanzó una alerta advirtiendo que MDAC 2.6 no debe 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 mediante la instalación de otro programa, puede causar un desastre falla del Agente SQL Server u otros servicios de SQL Server ". Este problema afectó a Backup Exec 9.0 de Veritas Software para servidores Windows, ya que instala Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) como 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

MDAC 2.7

MDAC 2.7 fue lanzado en octubre de 2001 a través del sitio web de Microsoft. En abril de 2002 se publicó una versión de actualización a través del lanzamiento de Windows XP ya través 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 de Brasil , 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 cambio de característica principal fue la compatibilidad con el sistema operativo de 64 bits de Microsoft , sin embargo, la compatibilidad con Banyan VINES también se eliminó de esta versión de MDAC. Hubo varios problemas conocidos: MDAC 2.7 continuó causando problemas de conectividad en servidores agrupados que ejecutan Microsoft SQL Server 6.5 o SQL Server 7.0, sin que Microsoft proporcione una solución alternativa. Al crear o configurar nombres de origen de datos ODBC (DSN) con el controlador ODBC de Microsoft SQL Server, el protocolo de la biblioteca de red puede cambiar inesperadamente a TCP / IP , incluso si el DSN se configuró para usar canalizaciones con nombre . Este problema fue encontrado por el reportero de InfoWorld , Randall C. Kennedy , quien identificó que el cambio en realidad se realizó en MDAC 2.6 pero nunca fue documentado. 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 con TCP / IP, los cambios de contexto por segundo se redujeron en más del 150 por ciento (lo que, por supuesto, es imposible porque entonces tendría una tasa de cambio de contexto negativa; la caída es 33 % o 60% dependiendo del planeta en el que se encontraba el autor en el momento de escribir este artículo) 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. Los usuarios de Windows XP también experimentaron a veces problemas para conectarse a SQL Server porque SQL Server intenta usar los certificados que encuentra en la computadora local, sin embargo, si hay más de un certificado disponible, no sabe cuál usar. Al intentar utilizar Microsoft Analysis Services 2000 RTM, a veces aparecía un error al intentar examinar cubos. 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 retrocediera cuando encontraba un error de instalación.

Microsoft resolvió varios problemas de seguridad para MDAC 2.7. David Litchfield de Next Generation Security Software Ltd informó sobre una vulnerabilidad de seguridad que se debe a que una de las funciones ODBC en MDAC que se usa para conectarse a fuentes de datos contenía un búfer no verificado. Otra vulnerabilidad que se solucionó fue una por la cual un atacante podía responder a un mensaje de descubrimiento de SQL Server transmitido por los clientes con un paquete especialmente diseñado que podría causar un desbordamiento del búfer. Se encontró otra falla por la cual el código se podía ejecutar de forma remota cuando el atacante respondía a la transmisión con otro paquete especialmente diseñado.

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 Data Access Technologies de Microsoft . No introdujo ninguna característica nueva en el producto, pero corrigió una serie de errores y problemas de seguridad: se eliminó un archivo reg (automatiza los cambios en el registro) que hizo que el servidor se ejecutara en un modo "inseguro" por el cual el RDS podría explotarse para obtener acceso no autorizado al sistema y se impuso una nueva restricción en la longitud de la cadena de consulta de Shape. También hubo varios cambios de administrador de ODBC.

El 23 de mayo de 2005, Brad Rhodes (director de programas de Microsoft Data Access Technologies) anunció que MDAC 2.8 SP1 era el último redistribuible independiente de MDAC que Microsoft distribuirá. MDAC es ahora un componente oficial del sistema operativo de Microsoft, aunque proporcionará correcciones de seguridad y errores continuos a las versiones publicadas anteriormente de la versión distribuible en la web. 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 ser 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 en una versión diferente de MDAC.

Windows 7 SP1 ha superado la compatibilidad con MDAC 2.8. El software compilado en Windows 7 SP1 que se basa en MDAC ADO no funcionará en versiones de Windows anteriores a Windows 7 SP1 (incluidos Windows 7 RTM, Vista, XP). Microsoft ha proporcionado soluciones para solucionar este problema en algunas aplicaciones, pero las aplicaciones VBA siguen afectadas. La solución para este problema se publicó en febrero de 2012.

Windows DAC 6.0

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 completamente equivalente funcionalmente a MDAC 2.8".

Comprobación de la versión

Hay dos formas de verificar la versión de MDAC que está instalada en una computadora. Para Windows 2000, Windows XP y Windows Server 2003, una forma de verificarlo es a través del programa Component Checker de Microsoft , que compara el valor de cada DLL MDAC instalado con el manifiesto del archivo MDAC. La segunda forma es verificar la clave HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVeren el registro de Windows . Microsoft señala que esta información puede ser incorrecta para las versiones de MDAC anteriores a 2.1 en comparación con las versiones de los archivos MDAC instalados en el sistema.

Versión Fecha de lanzamiento Incluido con Características Temas de seguridad
1.0 Agosto de 1996
  • ADC - IIS 3.0
  • SDK de OLE DB 1.1 (OLE DB 1.1 y ADO 1.0) - Visual Studio
  • Todos los componentes incluidos en Visual Interdev 1.0 y con Active Server Pages (lanzados en IIS 3.0)
  • ODBC 3.0
  • OLE DB 1.1
  • ADO 1.0
  • ADC 1.0
  • Controladores ODBC para bases de datos Access / Jet, SQL Server y Oracle

No se publicaron boletines

1,5

Septiembre de 1997 - marzo de 1998
  • Microsoft Internet Explorer 4.0
  • Internet Client SDK 4.0 (desde CD emitido en Microsoft PDC)
  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • RDS 1.5 (reemplazado ADC 1.0)
1.5a Septiembre de 1997 a marzo de 1998

Lanzamiento de servicio

1.5b Septiembre de 1997 a marzo de 1998

Lanzamiento de servicio

1.5c Septiembre de 1997 a marzo de 1998
  • Problemas resueltos con el subproceso ADO y la agrupación de conexiones ODBC
  • Solo vino con componentes de tiempo de ejecución ADO / MDAC
2.0 1 de julio de 1998
  • Visual Studio 98
  • SDK de acceso a datos 2.0
  • SDK de ODBC 3.5
  • SDK de OLE DB 1.5
  • Especificación OLE DB para OLAP
2.0SP1 1 de julio de 1998
  • Windows NT 4.0 SP4

Corrección del año 2000 para Windows NT 4.0

2.0SP2 1 de julio de 1998
  • Sitio web de Microsoft

Remediación del año 2000 para todas las plataformas

2.1 11 de julio de 1998
  • SQL Server 7.0
  • SQL Server 6.5 SP5
  • ADO 2.1
  • RDS 2.1
  • OLE DB 2.1
  • Proveedor OLE DB para ODBC, SQL Server y Oracle
  • JRO 2.1
  • Controlador ODBC
  • Conductor de jet
  • RDO
2.1 SP1 15 de marzo de 1999
  • Internet Explorer 5.0
  • Windows 98 Segunda edición
2.1 SP1a (GA) 1 de abril de 1999
  • Oficina 2000
  • BackOffice 4.5
  • Visual Studio 98 SP3
  • Internet Explorer 5.0a (instalación mínima)
2.1 SP2 Julio de 1999
2.5 17 de febrero de 2000
  • Windows 2000
  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • Proveedor OLE DB para el controlador ODBC para:
    • SQL
    • Servidor
    • Búsqueda del servidor del sitio
    • Publicación en Internet
    • Jet 4.0 (acceso 2000)
    • Oráculo
    • Servicios de indexación (Index Server)
    • Servicios de modelado de datos de Microsoft
    • Servicios OLAP
    • Paquetes DTS
    • Servicios de directorio de Microsoft
    • Archivo plano DTS del servidor
    • Proveedor simple OLE DB
  • JRO 2.5
  • ODBC 3.51
  • un controlador ODBC para
    • acceso Microsoft
    • servidor SQL
    • Microsoft Excel
    • Texto
    • Visual FoxPro
    • FoxPro VFP
    • dBase
    • dBase VFP
    • Paradoja
    • Oráculo
  • Conductores a reacción para:
    • Sobresalir
    • Microsoft Exchange
    • Acceso
    • archivos de texto
    • Lotus 1-2-3
    • Paradoja
    • xBase
2.5 SP1 31 de julio de 2000
  • Windows 2000 SP1
2.5 SP2 Abril de 2000
  • Windows 2000 SP2
2.5 SPS3 Diciembre de 2003
  • Windows 2000 SP3
2.6 Septiembre de 2000
  • SQL Server 2000
No incluido (instalado manualmente):
  • Microsoft Jet
  • Proveedor Microsoft Jet OLE DB
  • Controladores de base de datos de escritorio ODBC
2.6 SP1 Mayo de 2001
  • SQL Server 2000 SP1
2.6 SP2 Mayo de 2002
  • SQL Server 2000 SP2
2,7 Octubre de 2001
  • Windows XP
  • Soporte para sistemas operativos de 64 bits
  • El soporte de Banyan VINES cayó
2.8 Agosto de 2003
  • Windows Server 2003

Errores solucionados y problemas de seguridad.

2.8 SP1 Mayo de 2005
  • SQL Server 2000 SP4
  • Windows XP SP2

Errores arreglados

2.8 SP2 Marzo de 2005
  • Windows Server 2003 SP1
9.0 Nunca lanzado
  • Visual Studio 2005 Beta 1 (eliminado en versiones posteriores)
  • SQL Server 2005 Beta 1 (eliminado en versiones posteriores)
Windows DAC 6.0 (una variante de MDAC para usar con Vista) Noviembre de 2006
  • Número de versión sincronizado con la versión de Windows
  • Sin otras características nuevas

Referencias

Otras lecturas

enlaces externos