stringtranslate.com

Componentes de acceso a datos de Microsoft

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 .

Arquitectura

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.

Biblioteca de red de Microsoft SQL Server

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

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.

Enlace de datos universal

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]

ODBC

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]

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 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:

  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 de ese objeto Recordset. En un objeto Record, un Field 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. [5]
  2. Propiedades: Un objeto puede tener más de un objeto de propiedad, que están contenidos en la colección de propiedades del objeto. [6]
  3. Parámetros: Un objeto de comando puede tener varios comandos de parámetros para cambiar su comportamiento predefinido, y cada uno de los objetos de parámetros está contenido en la colección de parámetros del objeto de comando [7].
  4. Errores: todos los errores creados por el proveedor se pasan a una colección de objetos Error, mientras que la propia colección Errors está contenida en un objeto Connection. Cuando una operación ADO crea un error, la colección se borra y se crea un nuevo grupo de objetos Error en la colección. [8]

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 proveedores OLE DB específicos. Un objeto de conexión se conecta al almacén de datos utilizando su método 'Open' con una cadena de conexión que especifica la conexión como una lista de pares de valores clave (por ejemplo: " 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:
    • un proveedor OLE DB (por ejemplo SQLOLEDB), utilizando la sintaxis "provider="
    • un nombre de archivo, utilizando la sintaxis "nombre de archivo="
    • un proveedor y servidor remoto (ver RDS), utilizando la sintaxis "Proveedor remoto=" y "Servidor remoto="
    • una URL absoluta , utilizando la sintaxis "URL=" [10]
  2. 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 el uso de la propiedad CommandText , enviar una consulta parametrizada o un procedimiento almacenado mediante el uso de un objeto Parameter o una colección de Parameters o ejecutar una consulta y devolver los resultados a un objeto de conjunto de datos mediante el método Execute . Hay varios otros métodos que se pueden utilizar en el objeto Command relacionados con otros objetos, como los objetos Stream, RecordSet o Connection. [11]
  3. 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 . [12] 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 existen dentro de él. [13] Los registros se pueden actualizar en el conjunto de registros cambiando los valores en el registro y luego llamando al método Updateor UpdateBatch. La adición de nuevos registros se realiza a través de la AddNewfunción y luego llamando al método Updateor 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 Updatemétodo. El programador debe llamar explícitamente a la CancelUpdatefunció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:
    1. Inmediato: el conjunto de registros se bloquea mediante el bloqueo adLockOptimistico adLockPessimistic. Los datos se actualizan en la fuente de datos después de que se modifica el registro y Updatese llama al método.
    2. Lote: el conjunto de registros se bloquea mediante un método adLockBatchOptimisticy cada vez Updateque se 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 realiza 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 transaccionesBeginTrans . 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 CommitTransmétodo. RollbackTransse 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]
  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. [18]
  5. Stream: Un stream, utilizado principalmente en un objeto RecordSet, es un medio para leer y escribir un stream de bytes. [19] Se utiliza principalmente para guardar un conjunto de registros en formato XML, [20] 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 para alterar el comportamiento de una pieza común de funcionalidad, por ejemplo, a un procedimiento almacenado se le pueden pasar diferentes parámetros dependiendo de lo que se necesite hacer; estos se denominan comandos parametrizados . [21]
  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 en la tabla de la base de datos a la que hace referencia. [22]
  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 modificar) o una propiedad dinámica (definida por el proveedor de datos subyacente y que se puede modificar [23]).
  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 Errors. [24] 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. [25]

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 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]

Componentes obsoletos y en desuso

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.

Motor de base de datos Jet y JRO

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].

MSDASQL y Oracle ODBC

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.

Servicios de datos remotos (RDS)

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]

XML de SQL

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.

Componentes obsoletos

Microsoft ha eliminado por completo varios componentes de MDAC y ya no reciben soporte. Estos son:

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. [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]

MDAC1.5

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

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]

MDAC2.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 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].

MDAC2.5

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.

MDAC2.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, 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]

MDAC2.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 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]

MDAC2.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 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]

Convertidor DAC de Windows 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 totalmente equivalente funcionalmente a MDAC 2.8". [66]

Comprobación de versiones

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\FullInstallVeren 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].

Referencias

  1. ^ Kalen Delaney, "Dentro de Microsoft SQL Server 2000", Microsoft Press , págs. 70–74.
  2. ^ MSDN , "Creación de un archivo udl", "Referencia de API de ADO 2.8", consultado el 28 de abril de 2007.
  3. ^ ibíd.
  4. ^ Prash Shirolkar (autor); Alyssa Henry (colaborador); Stephen Pepitone (colaborador); Acey J. Bunch (colaborador); David Schwartz (colaborador), "Data Access Technologies Road Map", Microsoft Corporation , consultado el 1 de marzo de 2018.
  5. ^ MSDN , "Colección de campos", "Referencia de API de ADO 2.8", consultado el 19 de septiembre de 2005.
  6. ^ MSDN , "Colección de propiedades", "Referencia de API de ADO 2.8", consultado el 19 de septiembre de 2005.
  7. ^ MSDN , "Colección de parámetros", "Referencia de API de ADO 2.8", consultado el 19 de septiembre de 2005.
  8. ^ MSDN , "Recopilación de errores", "Referencia de API de ADO 2.8", consultado el 19 de septiembre de 2005.
  9. ^ MSDN , "Uso de un objeto de conexión", "Guía del programador de ADO 2.8", consultado el 10 de septiembre de 2005.
  10. ^ MSDN , "CADENA DE CONEXIÓN ADO", "Guía del programador de ADO 2.8", consultado el 10 de septiembre de 2005.
  11. ^ MSDN , "Descripción general del objeto de comando", "Guía del programador de ADO 2.8", consultado el 10 de septiembre de 2005
  12. ^ MSDN , "Examinar datos", "Guía del programador de ADO 2.8", consultado el 10 de septiembre de 2005.
  13. ^ Se puede encontrar una lista completa de los métodos y propiedades de ADO que permiten examinar datos en un conjunto de registros en la documentación de la API de Microsoft
  14. ^ MSDN , "Edición de datos", "Guía del programador de ADO 2.8", consultado el 10 de septiembre de 2005.
  15. ^ MSDN , "Eliminación de registros mediante el método Delete", "ADO 2.8 Programmers Guide", consultado el 10 de septiembre de 2005.
  16. ^ MSDN , "Actualización y persistencia de datos", "Guía del programador de ADO 2.8", consultado el 12 de septiembre de 2005.
  17. ^ MSDN , "Procesamiento de transacciones", "Guía del programador de ADO 2.8", consultado el 12 de septiembre de 2005.
  18. ^ MSDN , "Objeto de registro", "Referencia de API de ADO 2.8", consultado el 12 de septiembre de 2005.
  19. ^ MSDN , "Registros y transmisiones", "Guía del programador de ADO 2.8", consultado el 12 de septiembre de 2005.
  20. ^ MSDN , "Streams and Persistence", "ADO 2.8 Programmers Guide", consultado el 12 de septiembre de 2005.
  21. ^ MSDN , "Objeto de parámetro", "Referencia de API de ADO 2.8", consultado el 12 de septiembre de 2005.
  22. ^ MSDN , "Objeto de campo", "Referencia de API de ADO 2.8", consultado el 12 de septiembre de 2005.
  23. ^ MSDN , "Property Object" "ADO 2.8 Programmers Guide", consultado el 13 de septiembre de 2005.
  24. ^ MSDN , "Manejo de errores", "Guía del programador de ADO 2.8", consultado el 18 de septiembre de 2005.
  25. ^ MSDN , "Información de error relacionada con el campo", "Guía del programador de ADO 2.8", consultado el 18 de septiembre de 2005; y MSDN , "Información de error relacionada con el conjunto de registros", "Guía del programador de ADO 2.8", consultado el 18 de septiembre de 2005.
  26. ^ Doug Rothaus y Mike Pizzo, "ADO.NET para el programador ADO", MSDN , consultado el 22 de septiembre de 2005.
  27. ^ Microsoft , Componentes obsoletos (OLE DB), consultado el 5 de agosto de 2005.
  28. ^ Hamilton, Bill (2008). Libro de recetas de ADO.NET 3.5. Serie de libros de recetas (2.ª edición). O'Reilly Media, Inc., pág. 27. ISBN 9780596101404. Recuperado el 9 de octubre de 2012. [...] utilice el [...] proveedor Oracle OLE DB (MSDAORA) para acceder a los datos de Oracle.
  29. ^ Microsoft , "Hoja de ruta de tecnologías de acceso a datos", Componentes MDAC obsoletos, Apéndice A de la "Guía del programador ADO" de Microsoft : Proveedores, Proveedor OLE DB de Microsoft para ODBC Archivado el 5 de octubre de 2001 en Wayback Machine . , consultado el 30 de julio de 2005.
  30. ^ Microsoft , artículo 244661 de MS KB: INFORMACIÓN: Limitaciones del controlador ODBC de Microsoft Oracle y del proveedor OLEDB, última revisión el 25 de agosto de 2004, consultado el 4 de agosto de 2005.
  31. ^ Microsoft , "Remote Data Service (RDS)", consultado el 11 de agosto de 2005.
  32. ^ Microsoft , "Hoja de ruta de tecnologías de acceso a datos", "Componentes MDAC obsoletos"
  33. ^ Kalen Delaney, "Dentro de Microsoft SQL Server 2000", Microsoft Press , pág. 65.
  34. ^ Christine Solomon, "Manual del desarrollador de Microsoft Office 97", Microsoft Press , págs. 195–200.
  35. ^ (en alemán) Christian Koller, "ADO und MDAC Versionen": MDAC 1.0 y 1.1 (OLE DB 1.0 y OLE DB 1.1), consultado el 1 de julio de 2005.
  36. ^ abcd INFO: ¿Qué son MDAC, DA SDK, ODBC, OLE DB, ADO, RDS y ADO/MD?, Microsoft, 14 de marzo de 2005 , consultado el 1 de julio de 2005
  37. ^ ab Koller, Christian, "ADO und MDAC Versionen", MDAC 1.5 (en alemán) , consultado el 1 de julio de 2005
  38. ^ Microsoft , Programa de seguridad de Microsoft: Preguntas frecuentes: Boletín de seguridad de Microsoft (MS99-025), consultado el 6 de julio de 2005.
  39. ^ Microsoft , PRB: RDS Handler Error Messages Due to Security Settings (última revisión el 30 de septiembre de 2003), consultado el 6 de julio de 2005; Programa de seguridad de Microsoft: Boletín de seguridad de Microsoft (MS98-004): "Acceso a datos ODBC no autorizado con RDS e IIS" (última revisión: 17 de julio de 1998), consultado el 6 de julio de 2005; Vulnerabilidad CVE - 1999-1011 .
  40. ^ Christian Koller, "ADO und MDAC Versionen": MDAC 2.0, consultado el 1 de julio de 2005.
  41. ^ (en alemán) Christian Koller, "ADO und MDAC Versionen": MDAC 2.1, consultado el 1 de julio de 2005.
  42. ^ Microsoft , "Componentes de acceso a datos: Revisión de seguridad para Q329414"; Boletín de seguridad de Microsoft MS02-06 (originalmente artículo de Microsoft Knowledge Base Q329414) (publicado originalmente el 20 de noviembre de 2002), consultado el 6 de julio de 2005.
  43. ^ (en alemán) Christian Koller, "ADO und MDAC Versionen": MDAC 2.5, consultado el 1 de julio de 2005.
  44. ^ Microsoft , artículo 320700 de MS KB, "La agrupación de sesiones OLE DB provoca un uso del 100 por ciento de la CPU (MDAC 2.5)", consultado el 6 de julio de 2005.
  45. ^ Microsoft , artículo 842272 de MS KB Manifiesto de lanzamiento para MDAC 2.6 (2.60.6526.3), consultado el 6 de julio de 2005.
  46. ^ Microsoft , artículo 271908 de MS KB MDAC versión 2.6 y posteriores no contienen controladores ODBC para Jet o Desktop, consultado el 6 de julio de 2005.
  47. ^ Microsoft , artículo 820754 de MS KB MDAC 2.6 o posterior no debe instalarse en clústeres de SQL Server 7.0, consultado el 6 de julio de 2005.
  48. ^ Veritas , ID de documento: 258144 VERITAS Backup Exec (tm) 9.0 para servidores Windows no debe instalarse en un clúster de Microsoft SQL Server 7.0. Archivado el 5 de enero de 2013 en archive.today
  49. ^ "Manifiesto de versión de MDAC 2.7 Refresh (2.70.9001.0)". Support.microsoft.com . Consultado el 10 de abril de 2019 .
  50. ^ Microsoft , artículo 289573 PRB de MS KB: Configuración de DSN con bibliotecas de red de SQL Server.
  51. ^ Kennedy, Randall C. (21 de noviembre de 2001). "No es un error, es una característica". InfoWorld . IDG . Archivado desde el original el 10 de marzo de 2007.
  52. ^ Microsoft , artículo 309398 de MS KB La instalación de SQL Server 2000 o las conexiones locales fallan con el mensaje de error "Error de seguridad SSL: ConnectionOpen (SECDoClientHandshake())".
  53. ^ Microsoft , artículo 297232 de MS KB SOLUCIÓN: No se pueden explorar cubos ni procesar el modelo de minería de datos después de instalar Analysis Services 2000 RTM.
  54. ^ Microsoft , artículo 311720 de MS KB PRB: La reversión de MDAC puede fallar en Windows 95, Windows 98 y Windows Millennium Edition.
  55. ^ Microsoft , Boletín de seguridad de Microsoft MS02-040 Un búfer no controlado en la función MDAC podría permitir la vulneración del sistema (Q326573).
  56. ^ Microsoft , Boletín de seguridad de Microsoft MS03-033 Un búfer sin comprobar en la función MDAC podría permitir la vulneración del sistema (823718)
  57. ^ Microsoft , Boletín de seguridad de Microsoft MS04-003 Un desbordamiento del búfer en la función MDAC podría permitir la ejecución de código (832483)
  58. ^ Artículo 818490 de Microsoft KB: INFORMACIÓN: El archivo Handunsf.reg se ha eliminado en la configuración de MDAC 2.8 Redist por razones de seguridad
  59. ^ Artículo 838405 de Microsoft KB: CORRECCIÓN: Error "El argumento pasado al servicio de modelado de datos no era válido" después de aplicar MDAC 2.8
  60. ^ Microsoft . Artículo 818489 de MS KB, INFORMACIÓN: Cambios en el administrador de ODBC en MDAC 2.8.
  61. ^ Brad Rhodes (entrada de blog), El fin de MDAC Redistributable, 23 de mayo de 2005, consultado el 11 de agosto de 2005; y Microsoft , artículo de MS KB 892854: "Estrategia de lanzamiento para Microsoft Data Access Components", última actualización el 24 de enero de 2005, consultado el 11 de agosto de 2005.
  62. ^ Acey J. Bunch (26 de abril de 2005), "Presentación de SQL Native Client", entrada del blog de MSDN .
  63. ^ MSDN , "Cambio radical en los componentes COM de MDAC ADODB en Windows 7 Service Pack 1", "Foro", consultado el 9 de marzo de 2011.
  64. ^ KB 2517589 , "Una aplicación ADO que se vuelve a compilar en una computadora basada en Windows 7 Service Pack 1 no se ejecuta en sistemas operativos de nivel inferior", "", consultado el 17 de marzo de 2011.
  65. ^ KB 2640696 , "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", "", consultado el 20 de abril de 2012.
  66. ^ Microsoft , "Preguntas frecuentes sobre Windows DAC/MDAC". Consultado el 12 de diciembre de 2006.
  67. ^ Microsoft . Artículo 301202 de MS KB, Cómo comprobar la versión de MDAC, última actualización el 18 de enero de 2005, consultado el 29 de septiembre de 2005.
  68. ^ Capítulo 11 Cambios, material complementario de "Un primer vistazo a SQL Server 2005 para desarrolladores" de Bob Beauchemin, Niels Berglund y Dan Sullivan. Archivado el 24 de marzo de 2006 en Wayback Machine.

Lectura adicional

Enlaces externos