Composants d'accès aux données Microsoft - Microsoft Data Access Components

Composants d'accès aux données Microsoft
Architecture MDAC.svg
MDAC fournit un cadre uniforme pour accéder à une variété de sources de données sur leur plate-forme Windows
Développeur(s) Microsoft
Version finale
2.8 SP1 (2.81.1117.6) / Mai 2005
Système opérateur Windows 98 , Windows ME , Windows NT 4 , Windows 2000 , Windows XP , Windows Server 2003 , Windows 7 , Windows 10
Taper Base de données
Licence Logiciel gratuit
Site Internet msdn2 .microsoft .com /en-us /data /aa937729 .aspx

Microsoft Data Access Components ( MDAC ; également connu sous le nom de Windows DAC ) est un cadre de technologies Microsoft interdépendantes qui permet aux programmeurs de développer de manière uniforme et complète des applications pouvant accéder à presque tous les magasins de données. Ses composants incluent : ActiveX Data Objects (ADO), OLE DB et Open Database Connectivity (ODBC). Il existe également plusieurs composants obsolètes, tels que le moteur de base de données Microsoft Jet , MSDASQL (le fournisseur OLE DB pour ODBC) et Remote Data Services (RDS). Certains composants sont également devenus obsolètes , comme l'ancienne API Data Access Objects et les objets de données distants .

La première version de MDAC a été publiée en août 1996. À cette époque, Microsoft a déclaré que MDAC était plus un concept qu'un programme autonome et n'avait pas de méthode de distribution généralisée. Plus tard, Microsoft a publié des mises à niveau vers MDAC en tant que packages redistribuables basés sur le Web. Finalement, les versions ultérieures ont été intégrées à Microsoft Windows et Internet Explorer , et dans MDAC 2.8 SP1, elles ont cessé d'offrir MDAC en tant que package redistribuable.

Tout au long de son histoire, MDAC a fait l'objet de plusieurs failles de sécurité , qui ont conduit à des attaques telles qu'une attaque par escalade de privilèges , bien que les vulnérabilités aient généralement été corrigées dans les versions ultérieures et assez rapidement. La version actuelle est 2.8 Service Pack 1, mais le produit a eu de nombreuses versions différentes et bon nombre de ses composants ont été dépréciés et remplacés par des technologies Microsoft plus récentes. MDAC est désormais connu sous le nom de Windows DAC dans Windows Vista .

Architecture

La dernière version de MDAC (2.8) se compose de plusieurs composants interactifs, tous spécifiques à Windows, à l' exception d' ODBC (qui est disponible sur plusieurs plates-formes). L'architecture MDAC peut être considérée comme trois couches : une couche d'interface de programmation, composée d' ADO et d' ADO.NET , une couche d'accès aux bases de données développée par des fournisseurs de bases de données tels qu'Oracle et Microsoft ( OLE DB , fournisseurs gérés .NET et pilotes ODBC ), base de données elle-même. Ces couches de composants sont toutes mises à la disposition des applications via l' API MDAC . La bibliothèque réseau Microsoft SQL Server , une méthode d'accès propriétaire spécifique à Microsoft SQL Server, est également incluse dans le MDAC. Les développeurs d'applications Windows sont encouragés à utiliser ADO ou ADO.NET pour l'accès aux données, l'avantage étant que les utilisateurs du programme d'application ne sont pas contraints dans leur choix d'architecture de base de données, sauf qu'elle doit être prise en charge par MDAC. Naturellement, les développeurs ont toujours le choix d'écrire des applications qui accèdent directement à OLE DB et ODBC.

Bibliothèque réseau Microsoft SQL Server

La bibliothèque réseau Microsoft SQL Server (également connue sous le nom de Net-Lib) est utilisée par Microsoft SQL Server pour lire et écrire des données à l'aide de nombreux protocoles réseau différents . Bien que Net-Lib soit spécifique à SQL Server, Microsoft l'inclut avec MDAC. Le SQL Server utilise la bibliothèque pour communiquer avec Net-Lib, qui interfaces directement avec l'Open Data Services (ODS) Windows NT de ligne du système d'exploitation Win32 sous - système . La bibliothèque réseau SQL Server est contrôlée via l'utilisation d'un utilitaire de réseau client, qui est fourni avec SQL Server.

Chaque protocole réseau pris en charge par Net-Lib possède un pilote distinct (à ne pas confondre avec un pilote de périphérique ) et prend en charge une couche de session dans sa pile de protocoles. Il existe deux types généraux de Net-Lib : le primaire et le secondaire. Le Net-Lib primaire est constitué d'un socket super Net-Lib et la mémoire partagée Net-Lib, alors qu'il existe de nombreux net-libs secondaires, y compris TCP / IP et canaux nommés bibliothèques réseau (canaux nommés sont un moyen de communication avec d' autres processus via un pipeline persistant du système auquel est attribuée une identité). Le fournisseur Microsoft OLE DB pour SQL Server (SQLOLEDB) communique via les Net-Libs principales.

La Net-Lib Super Socket gère les communications inter-ordinateurs et coordonne les Net-Libs secondaires – bien que la Net-Lib secondaire TCP/IP soit une exception dans la mesure où elle appelle directement l'API Windows Sockets 2 . Les Net-Libs Banyan VINES , AppleTalk , ServerNet , IPX/SPX , Giganet et RPC ont été supprimées à partir de MDAC 2.5. Le routeur de la bibliothèque réseau avait pour tâche de gérer tous ces protocoles, cependant désormais, seuls les canaux nommés Net-Lib secondaires sont gérés par le routeur. Le Super Socket Net-Lib gère également le cryptage des données via l'utilisation de l' API SSL de Windows .

La mémoire partagée Net-Lib, d'autre part, gère les connexions entre plusieurs instances de SQL Server qui existent sur un ordinateur. Il utilise une zone de mémoire partagée pour communiquer entre les processus. Ceci est intrinsèquement sécurisé ; il n'est pas nécessaire de chiffrer les données entre les instances de SQL Server qui existent sur un ordinateur car le système d'exploitation n'autorise aucun autre processus à accéder à la zone de mémoire partagée des instances.

Net-Lib est également capable de prendre en charge l'emprunt d'identité du contexte de sécurité d'un utilisateur connecté pour les protocoles qui prennent en charge les connexions authentifiées (appelées connexions de confiance ). Cela permet à Net-Lib de fournir un mécanisme d'authentification de connexion intégré via l'utilisation de l' authentification Windows . L'authentification Windows n'est pas prise en charge sous Windows 98 ou Windows Me.

OLE DB

OLE DB (également appelé OLEDB ou OLE-DB) permet aux applications MDAC d'accéder à différents types de magasins ([données]) de manière uniforme. Microsoft a utilisé cette technologie pour séparer l'application des données pouvant stocker sur le site Web le magasin de données auquel il a besoin d'accéder. Cela a été fait parce que différentes applications ont besoin d'accéder à différents types et sources de données, et n'ont pas nécessairement besoin de savoir comment accéder à des fonctionnalités spécifiques à la technologie. La technologie est conceptuellement divisée en consommateurs et fournisseurs . Les consommateurs sont les applications qui ont besoin d'accéder aux données, et le fournisseur est le composant logiciel qui expose une interface OLE DB via l'utilisation du Component Object Model (ou COM).

OLE DB est la technologie d'interface d'accès à la base de données utilisée par MDAC. Les fournisseurs OLE DB peuvent être créés pour accéder à des magasins de données aussi simples qu'un fichier texte ou une feuille de calcul , jusqu'à des bases de données complexes telles qu'Oracle et SQL Server . Cependant, étant donné que différentes technologies de magasin de données peuvent avoir des fonctionnalités différentes, les fournisseurs OLE DB peuvent ne pas implémenter toutes les interfaces possibles disponibles. Les capacités disponibles sont implémentées via l'utilisation d'objets COM - un fournisseur OLE DB mappera la fonctionnalité de la technologie de magasin de données à une interface COM particulière. Microsoft appelle la disponibilité d'une interface à « propre au fournisseur » car elle peut ne pas être applicable en fonction de la technologie de base de données impliquée. De plus, cependant, les fournisseurs peuvent également augmenter les capacités d'un magasin de données ; ces fonctionnalités sont appelées services dans le langage Microsoft.

Le fournisseur Microsoft OLE DB pour SQL Server (SQLOLEDB) est le fournisseur OLE DB fourni par Microsoft pour Microsoft SQL Server à partir de la version 6.5.

Liaison de données universelle

Les fichiers de liaison de données universels (ou « fichiers .udl ») fournissent une interface utilisateur commune pour spécifier les attributs de connexion. Un utilisateur peut utiliser une boîte de dialogue Propriétés de liaison de données pour enregistrer les informations de connexion dans un fichier .udl au lieu de les spécifier directement à la main dans une chaîne de connexion. Par conséquent, ces fichiers offrent un niveau d' indirection pratique . En outre, la boîte de dialogue spécifie un certain nombre de fournisseurs de données OLE DB alternatifs pour diverses applications cibles.

ODBC

Open Database Connectivity (ODBC) est une interface native accessible via un langage de programmation (généralement C ) qui peut effectuer des appels dans une bibliothèque native . Dans MDAC, cette interface est définie comme une DLL. Un module ou un pilote distinct est nécessaire pour chaque base de données à laquelle il faut accéder. Les fonctions de l'API ODBC sont implémentées par ces pilotes spécifiques au SGBD. Le pilote fourni par Microsoft dans MDAC s'appelle le pilote ODBC SQL Server (SQLODBC) et (comme son nom l'indique) est conçu pour le serveur SQL de Microsoft. Il prend en charge SQL Server v6.5 et versions ultérieures. ODBC permet aux programmes d'utiliser des requêtes SQL qui accéderont aux bases de données sans avoir à connaître les interfaces propriétaires des bases de données. Il gère la requête SQL et la convertit en une requête que le système de base de données individuel comprend. Selon Microsoft, "Après SQL Server 2012, le pilote ODBC sera mis à jour pour les fonctionnalités de serveur les plus récentes, y compris la base de données Microsoft Windows Azure SQL, et publié en tant que pilote ODBC Microsoft pour SQL Server".

ADO

ActiveX Data Objects ( ADO ) est une interface de programmation de haut niveau pour OLE DB. Il utilise un modèle d' objet hiérarchique pour permettre aux applications de créer, récupérer, mettre à jour et supprimer par programme des données à partir de sources prises en charge par OLE DB. ADO se compose d'une série d'objets et de collections hiérarchiques COM, un objet qui agit comme un conteneur de nombreux autres objets. Un programmeur peut accéder directement aux objets ADO pour manipuler des données, ou peut envoyer une requête SQL à la base de données via plusieurs mécanismes ADO. ADO se compose de neuf objets et de quatre collections .

Les recueils sont :

  1. Fields : cette collection contient un ensemble d'objets Field. La collection peut être utilisée dans un objet Recordset ou dans un objet Record. Dans un objet Recordset, chacun des objets Field qui composent la collection Fields correspond à une colonne de cet objet Recordset. Dans un objet Record, un champ peut être une URL absolue ou relative qui pointe vers un espace de noms arborescent (utilisé pour les fournisseurs de données semi-structurées comme le fournisseur Microsoft OLE DB pour la publication Internet) ou comme référence à l'objet Stream par défaut associé avec cet objet Record.
  2. Propriétés : un objet peut avoir plusieurs objets Property, qui sont contenus dans la collection Properties de l'objet.
  3. Paramètres : un objet Command peut avoir plusieurs commandes Parameter pour modifier son comportement prédéfini, et chacun des objets Parameter est contenu dans la collection Parameters de l'objet Command
  4. Erreurs : toutes les erreurs créées par le fournisseur sont transmises à une collection d'objets Error, tandis que la collection Errors elle-même est contenue dans un objet Connection. Lorsqu'une opération ADO crée une erreur, la collection est effacée et un nouveau groupe d'objets Error est créé dans la collection.

Les objets sont :

  1. Connexion : L'objet de connexion est la connexion d'ADO à un magasin de données via OLE DB. L'objet de connexion stocke des informations sur la session et fournit des méthodes de connexion au magasin de données. Comme certaines banques de données ont des méthodes différentes pour établir une connexion, certaines méthodes peuvent ne pas être prises en charge dans l'objet de connexion pour des fournisseurs OLE DB particuliers. Un objet de connexion se connecte au magasin de données à l'aide de sa méthode 'Open' avec une chaîne de connexion qui spécifie la connexion sous la forme d'une liste de paires clé-valeur (par exemple : " Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';"). Le début de celui-ci doit identifier le type de connexion au magasin de données requis par l'objet de connexion. Cela doit être soit :
    • un fournisseur OLE DB (par exemple SQLOLEDB), en utilisant la syntaxe "provider="
    • un nom de fichier, en utilisant la syntaxe "file name="
    • un fournisseur et un serveur distants (voir RDS ), en utilisant la syntaxe "Remote provider=" et "Remote server="
    • une URL absolue , en utilisant la syntaxe "URL="
  2. Commande : une fois que l'objet de connexion a établi une session avec la source de données, des instructions sont envoyées au fournisseur de données via l'objet de commande. L'objet de commande peut envoyer des requêtes SQL directement au fournisseur par l'utilisation de la CommandText propriété, envoyer une requête paramétrée ou procédure stockée à l'aide d'un paramètre objet ou paramètres collection ou d' exécuter une requête et retourne les résultats à un objet ensemble de données via le Exécuter la méthode. Il existe plusieurs autres méthodes qui peuvent être utilisées dans l'objet Command concernant d'autres objets, tels que les objets Stream, RecordSet ou Connection.
  3. Jeu d'enregistrements : un jeu d' enregistrements est un groupe d'enregistrements et peut provenir d'une table de base ou résulter d'une requête sur la table. L'objet RecordSet contient une collection Fields et une collection Properties . La collection Fields est un ensemble d'objets Field, qui sont les colonnes correspondantes dans la table. La collection Properties est un ensemble d'objets Property, qui définit une fonctionnalité particulière d'un fournisseur OLE DB. Le RecordSet possède de nombreuses méthodes et propriétés pour examiner les données qui s'y trouvent. Les enregistrements peuvent être mis à jour dans le jeu d'enregistrements en modifiant les valeurs de l'enregistrement, puis en appelant la méthode Updateou UpdateBatch. L'ajout de nouveaux enregistrements s'effectue via la AddNewfonction puis en appelant la méthode Updateou UpdateBatch. Les enregistrements sont également supprimés dans le jeu d'enregistrements avec la méthode Delete puis en appelant la méthode Update. Cependant, si pour une raison quelconque la suppression ne peut pas se produire, par exemple en raison de violations de l' intégrité référentielle , le jeu d'enregistrements restera en mode édition après l'appel à la Updateméthode. Le programmeur doit explicitement appeler la CancelUpdatefonction pour annuler la mise à jour. De plus, ADO peut annuler les transactions (si cela est pris en charge) et annuler les mises à jour par lots. Les jeux d'enregistrements peuvent également être mis à jour de l'une des trois manières suivantes : via une mise à jour immédiate, via une mise à jour par lots ou via l'utilisation de transactions :
    1. Immédiat : le jeu d'enregistrements est verrouillé à l'aide du verrou adLockOptimisticou adLockPessimistic. Les données sont mises à jour au niveau de la source de données après la modification de l'enregistrement et l' Updateappel de la méthode.
    2. Lot : le jeu d'enregistrements est verrouillé à l'aide de adLockBatchOptimisticet à chaque Updateappel, les données sont mises à jour dans une mémoire tampon temporaire. Enfin, lorsque UpdateBatchest appelé, les données sont complètement mises à jour à la source de données. Cela a l'avantage que tout se fait en mémoire, et si un problème survient, il UpdateCancelest appelé et les mises à jour ne sont pas envoyées à la source de données
    3. Transaction : Si le fournisseur OLE DB le permet, les transactions peuvent être utilisées. Pour démarrer la transaction, le programmeur invoque la BeginTransméthode et effectue les mises à jour requises. Quand ils sont tous terminés, le programmeur invoque la CommitTransméthode. RollbackTranspeut être invoqué pour annuler toutes les modifications apportées à l'intérieur de la transaction et restaurer la base de données à l'état avant le début de la transaction
  4. Enregistrement : cet objet représente un enregistrement dans la base de données et contient une collection de champs. Un RecordSet se compose d'une collection d'objets Record.
  5. Stream : Un flux, principalement utilisé dans un objet RecordSet, est un moyen de lire et d'écrire un flux d'octets. Il est principalement utilisé pour enregistrer un jeu d'enregistrements au format XML, pour envoyer des commandes à un fournisseur OLE DB comme alternative à l'objet CommandText et pour contenir le contenu d'un fichier binaire ou texte.
  6. Paramètre : un paramètre est un moyen de modifier le comportement d'une fonctionnalité commune, par exemple, une procédure stockée peut avoir différents paramètres qui lui sont transmis en fonction de ce qui doit être fait ; celles-ci sont appelées commandes paramétrées .
  7. Field : chaque objet Record contient de nombreux champs, et un objet RecordSet a également un objet Field correspondant. L'objet Field de l'objet RecordSet correspond à une colonne de la table de base de données qu'il référence.
  8. Propriété : cet objet est spécifique au fournisseur OLE DB et définit une capacité que le fournisseur a implémentée. Un objet de propriété peut être soit une propriété intégrée - c'est une propriété bien définie déjà implémentée par ADO et ne peut donc pas être modifiée - soit une propriété dynamique - définie par le fournisseur de données sous-jacent et peut être modifiée
  9. Erreur : lorsqu'une erreur de fournisseur OLE DB se produit lors de l'utilisation d'ADO, un objet Error est créé dans la collection Errors. Cependant, les autres erreurs n'entrent pas dans un objet Error. Par exemple, toutes les erreurs qui se produisent lors de la manipulation de données dans un objet RecordSet ou Field sont stockées dans une propriété Status.

ADO.NET

ADO.NET est la dernière version d'ADO (après ADO 2.8, maintenant souvent appelée ADO Classic) et fait partie de la pile MDAC 2.8 aux côtés d'ADO classique. Il est construit autour de Microsoft .NET . Bien que parfois considéré comme une avancée évolutive par rapport à ADO, certains changements structurels fondamentaux ont été apportés par Microsoft. ADO.NET s'exécute via un fournisseur géré .NET, une version modifiée d'un fournisseur OLE DB spécialement conçu pour .NET. La structure de l'objet n'est plus construite autour d'un objet Recordset. Au lieu de cela, un objet Dataset est utilisé pour contenir des données collectées à partir de plusieurs sources. Ceci est transparent pour le programmeur. Contrairement à l'ancien ADO Recordset, la conception de l'ensemble de données favorise l'utilisation de données déconnectées. Conceptuellement, un objet Dataset peut être considéré comme une petite base de données relationnelle en mémoire à part entière qui permet la manipulation des données dans n'importe quelle direction. Afin de propager les modifications dans la base de données, un objet DataAdapter est utilisé qui transfère les données entre la source de données et l'objet DataSet. Les curseurs ont également été dépréciés dans ADO.NET, étant remplacés par un objet DataReader , qui est utilisé pour traiter efficacement une grande liste de résultats un enregistrement à la fois sans les stocker.

Composants obsolètes et obsolètes

MDAC est un framework de composants en constante évolution. En tant que tel, plusieurs composants en faisaient auparavant partie, mais ont depuis été dépréciés ou entièrement supprimés du framework.

Moteur de base de données Microsoft Jet et JRO

Jet signifie Joint Engine Technology et était un moteur de base de données utilisé pour Microsoft Access , Microsoft Exchange Server et Visual Basic . Jet faisait partie d'un système de gestion de base de données relationnelle (SGBDR) et offrait une interface unique que d'autres logiciels pouvaient utiliser pour accéder aux bases de données Microsoft. Jet a également pris en charge la sécurité, l' intégrité référentielle , le traitement des transactions , l' indexation , le verrouillage des enregistrements et des pages et la réplication des données. Dans les versions ultérieures de Jet, le moteur a été étendu pour exécuter des requêtes SQL , stocker des données de caractères au format Unicode , créer des vues et autoriser une réplication bidirectionnelle avec Microsoft SQL Server. Il a depuis été remplacé par MSDE .

Il y avait trois modules pour Jet. L'un était le pilote Native Jet ISAM , une bibliothèque de liens dynamiques (DLL) Jet capable de manipuler directement les fichiers de base de données Microsoft Access (MDB), qui était une forme modifiée d'une base de données ISAM (Indexed Sequential Access Method ). Un autre des modules était les pilotes ISAM , les DLL qui permettaient d'accéder aux bases de données ISAM, parmi lesquelles les fichiers Xbase , Paradox , Btrieve et FoxPro . Le dernier module était la DLL des objets d'accès aux données (DAO) , DAO permettait aux programmeurs d'accéder au moteur Jet. Il s'agissait essentiellement d'un langage de données orienté objet utilisé par les développeurs d'applications Access Basic et Visual Basic pour accéder à Jet.

De même, le fournisseur Microsoft Jet OLE DB et les objets de réplication (JRO) qui permettaient la réplication entre les sources de données Jet ont été supprimés de MDAC 2.6

MSDASQL et Oracle ODBC

Le fournisseur Microsoft OLE DB pour ODBC, ou MSDASQL, était un fournisseur OLE DB permettant aux objets de données ActiveX d' accéder aux bases de données via n'importe quel pilote ODBC. Microsoft a fourni plusieurs fournisseurs OLE-DB (pour le service d'indexation, Active Directory , Jet, SQL Server, Oracle ( MSDAORA) et la publication Internet), mais sauf indication contraire, ADO a utilisé par défaut MSDASQL comme fournisseur par défaut. Après MDAC 2.5, le pilote Oracle ODBC et MSDASQL ont pris en charge Oracle 7 et partiellement pris en charge Oracle 8i. Les fonctionnalités qui n'étaient pas prises en charge étaient :

Microsoft a initialement déprécié le composant MSDASQL pour ses systèmes d'exploitation 64 bits et le pilote ODBC Microsoft Oracle a ensuite été remplacé par un fournisseur Oracle géré .NET, qui prenait en charge Oracle 9i. Cependant, Windows Server 2008 et Windows Vista SP1 sont livrés avec une version 64 bits de MSDASQL.

Services de données à distance (RDS)

Les services de données à distance (RDS) permettaient de récupérer un ensemble de données du serveur, que le client modifiait ensuite d'une manière ou d'une autre, puis renvoyait au serveur pour un traitement ultérieur. Avec l'adoption populaire de Transact-SQL , qui étend SQL avec des constructions de programmation telles que des boucles et des instructions conditionnelles, cela est devenu moins nécessaire et a finalement été déprécié dans MDAC 2.7. Microsoft a produit SOAP Toolkit 2.0, qui permet aux clients de le faire via une norme ouverte basée sur XML .

SQLXML

SQLXML a été conçu pour SQL Server 2000, mais a été déprécié avec MDAC 2.6. Il a permis à la base de données relationnelle de Microsoft d'être visualisée par XPath et aux données d'être visualisées sous forme de fichier XML . Il n'a pas été obsolète mais a été supprimé des versions ultérieures de MDAC, bien que Microsoft le fournisse en tant que composant téléchargeable et le prendra en charge sur leurs systèmes d'exploitation 64 bits.

Composants obsolètes

Plusieurs composants ont été complètement supprimés de MDAC par Microsoft et ne sont plus pris en charge. Elles sont:

  • ESQL/C : Embedded SQL (également connu sous le nom d'E-SQL ou ESQL/C) est un moyen d'utiliser SQL lors de la programmation dans Visual C. Microsoft a abandonné la prise en charge de cela après la sortie de SQL Server 6.5, bien qu'ils aient autorisé certains des ESQL /C environnement d'exécution à une société appelée Micro Focus , qui développe des compilateurs et des outils COBOL
  • DAO : DAO, ou Data Access Objects, était une interface orientée objet créée par Microsoft qui permettait aux premières versions de Microsoft Access et de Visual Basic d'accéder au moteur de base de données Jet . Plus tard (dans la version 3.5), il a pu contourner complètement le moteur Jet et accéder directement aux sources de données ODBC .
  • RDO : Remote Data Objects , ou RDO, était une technologie Microsoft qui permettait la création d'interfaces faisant directement appel à ODBC. RDO version 2.0 était la version finale développée par Microsoft.
  • DB-Library : une API basée sur C qui permettait à une application d'interagir avec SQL Server. Il ne sera pris en charge sur aucun produit après SQL Server 2000 et aucune fonctionnalité n'a été ajoutée après SQL Server 6.5.

Histoire

Microsoft a publié plusieurs versions de MDAC au fil du temps. La méthode de distribution a varié et l'ensemble de fonctionnalités est différent pour chaque version.

MDAC 1.0

MDAC 1.0 a été publié pour la première fois en août 1996. Selon Microsoft, « MDAC 1.0 existait davantage en tant que concept qu'en tant que programme d'installation coordonné et autonome. La pile MDAC 1.0 se composait d'ODBC 3.0, d'OLE DB 1.1, d'ADO 1.0 et d' Advanced Data Connector (ADC) 1.0 - qui, selon Microsoft, était le précurseur du service de données à distance de MDAC 1.5. Il comprenait également des pilotes ODBC pour les bases de données Access/Jet, SQL Server et Oracle . MDAC 1.0 a été publié via plusieurs mécanismes : le connecteur de données avancé fourni avec Internet Information Server (IIS) 3.0 et sous forme de fichier cab téléchargeable ; OLE DB 1.1 et ADO 1.0 sont livrés avec le SDK OLE DB 1.1, fourni avec Visual Studio 97 et également téléchargeable. MDAC 1.0 est venu avec Active Server Pages, qui lui-même est venu dans IIS 3.0, et également avec Visual InterDev 1.0.

MDAC 1.5

MDAC 1.5 a été publié entre septembre 1997 et mars 1998, et impliquait un mécanisme de distribution plus centralisé que MDAC 1.0. Il a été publié avec Microsoft Internet Explorer 4.0, Internet Client SDK 4.0 et via un CD-ROM distribué lors de la Conférence des développeurs professionnels (PDC) de 1997 . Il y avait cinq versions de MDAC 1.5 :

  • MDAC 1.5 (version initiale) : inclus avec Internet Explorer 4.0 et Internet Client SDK.
  • MDAC 1.5a : téléchargeable sur le site de Microsoft
  • MDAC 1.5b : fourni avec Windows NT 4.0 Option Pack & Office 97
  • MDAC 1.5c : problèmes résolus avec le threading ADO et le pool de connexions ODBC et a été distribué via le site Web de Microsoft. Il n'est venu qu'avec les composants d'exécution ADO/MDAC.
  • MDAC 1.5d : fourni avec Windows 98 et Internet Explorer 4.01 Service Pack 1.

Les différentes versions de MDAC 1.5 se composaient de :

  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • Remote Data Service 1.5, qui a remplacé le connecteur de données avancé.

Cette version de MDAC comportait une faille de sécurité qui la rendait vulnérable à une attaque par élévation des privilèges . La vulnérabilité a amené les systèmes sur lesquels IIS et MDAC sont installés à donner à un utilisateur Web non autorisé la possibilité d'exécuter des commandes shell sur le système IIS en tant qu'utilisateur privilégié. Cela a permis à l'attaquant d'utiliser MDAC pour tunneler les requêtes de données SQL et ODBC via la connexion publique à un réseau principal privé lorsqu'il se trouvait sur un système IIS multi-résident connecté à Internet. Il a également permis à l'utilisateur d'obtenir un accès non autorisé à des fichiers sécurisés et non publiés sur le système IIS

MDAC 1.5 était la dernière version du composant d'accès aux données prise en charge sous Windows NT 3.51 SP5.

MDAC 2.0

MDAC 2.0 a été distribué avec le SDK Data Access 2.0 et comprenait le contenu de MDAC 1.5, le SDK ODBC 3.5 et le SDK OLE DB 1.5 et la spécification OLE DB pour OLAP . Il avait également inclus de nombreuses mises à jour du produit de base, y compris une fonctionnalité de sécurité ajoutée au RDS qui l'empêchait d'être utilisé de manière malveillante sur un serveur IIS. Cette version était incluse dans Windows NT 4.0 SP4, ainsi qu'avec Visual Studio 6.0, fourni avec le SDK complet d'accès aux données.

MDAC 2.1

MDAC 2.1 a été distribué avec SQL Server 7.0 et SQL Server 6.5 SP5. MDAC 2.1 SP1 a été distribué avec Internet Explorer 5 et MDAC 2.1 SP1a (GA) a été distribué avec Microsoft Office 2000, BackOffice 4.5 et Visual Studio 98 SP3. Cependant, aucune de ces versions de MDAC n'a été diffusée au grand public via le World Wide Web . MDAC 2.1 SP2 a été distribué à partir du site Web de Microsoft. Les composants inclus avec 2.1 étaient :

  • ADO 2.1
  • RDS 2.1
  • OLE DB 2.1
  • le fournisseur OLE DB pour ODBC, SQL Server et Oracle
  • JRO 2.1
  • un pilote d'avion
  • RDO.

Cette version présentait des failles de sécurité selon lesquelles un tampon non contrôlé pouvait permettre une attaque avec des privilèges élevés. Cela a été trouvé quelque temps plus tard et a affecté MDAC 2.1, 2.5 et 2.6 et a été corrigé dans un correctif ultérieur

MDAC 2.5

MDAC 2.5 a été publié le 17 février 2000 et distribué avec Windows 2000 , et les service packs MDAC ont été publiés en parallèle avec les service packs Windows 2000. Ils ont également été distribués via le site Web de Microsoft. Trois service packs ont été publiés. Les composants inclus avec 2.5 étaient :

  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • de nombreux fournisseurs OLE DB
  • JRO 2.5
  • ODBC 3.51
  • de nombreux pilotes ODBC
  • de nombreux pilotes de Jet.

Plusieurs problèmes ont été trouvés dans cette version de MDAC. Lors de l'utilisation du pool de sessions OLE DB, Microsoft COM+ essaierait de charger et de décharger OLE DB en continu, et un conflit pourrait survenir et entraîner l'exécution du pool de sessions OLE DB à 100 % d'utilisation du processeur. Cela a été corrigé plus tard. Microsoft a publié une liste complète des bogues corrigés dans MDAC 2.5 Service Pack 2 et MDAC 2.5 Service Pack 3 . Une vulnérabilité de sécurité existait également (corrigée plus tard) selon laquelle un tampon non contrôlé a été trouvé dans le pilote SQL Server. Cette faille a été introduite dans MDAC 2.5 SP2.

MDAC 2.6

MDAC 2.6 a été publié en septembre 2000 et a été distribué via le Web et avec Microsoft SQL Server 2000 MDAC 2.6 RTM, SP1 (publié le 20 juin 2001) et SP2 (publié le 11 juin 2002) ont été distribués en parallèle avec Microsoft SQL Server 2000 service packs, et peut également être téléchargé à partir du site Web de Microsoft.

À partir de cette version de MDAC, Microsoft Jet, le fournisseur Microsoft Jet OLE DB et les pilotes de base de données de bureau ODBC n'étaient pas inclus. Au lieu de cela, ceux-ci pourraient être installés manuellement. Microsoft a également publié un avertissement indiquant que MDAC 2.6 ne doit pas être installé sur un cluster SQL Server 7.0, car « si vous installez MDAC 2.6 ou une version ultérieure sur n'importe quel nœud du cluster, directement ou via l'installation d'un autre programme, cela peut provoquer un défaillance de l'agent SQL Server ou d'autres services SQL Server." Ce problème affectait Backup Exec 9.0 de Veritas Software pour les serveurs Windows, car il installe Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) comme base de données. La révision 4367 a installé MDAC version 2.6 SP2 tandis que la révision 4454 a installé MDAC version 2.7 SP1, qui n'a pas eu le problème

MDAC 2.7

MDAC 2.7 a été publié en octobre 2001 sur le site Web de Microsoft. Une version actualisée a été publiée en avril 2002 via la sortie de Windows XP et via le site Web de Microsoft. La version 2.7 était disponible en anglais américain , chinois (traditionnel et simplifié), allemand, japonais, coréen, portugais brésilien , tchèque , danois, grec, slovaque , slovène , espagnol, finnois, français, hongrois, italien, néerlandais , norvégien, polonais, Portugais, russe, suédois et turc . L'hébreu et l' arabe n'étaient disponibles que via Windows XP.

Le principal changement de fonctionnalité était la prise en charge du système d'exploitation 64 bits de Microsoft, mais la prise en charge de Banyan VINES a également été supprimée de cette version de MDAC. Il y avait plusieurs problèmes connus : MDAC 2.7 a continué à causer des problèmes de connectivité sur les serveurs en cluster exécutant Microsoft SQL Server 6.5 ou SQL Server 7.0, sans solution de contournement fournie par Microsoft. Lors de la création ou de la configuration de noms de source de données (DSN) ODBC à l'aide du pilote ODBC Microsoft SQL Server, le protocole de la bibliothèque réseau peut basculer de manière inattendue vers TCP/IP , même si le DSN a été configuré pour utiliser des canaux nommés . Ce problème a été découvert par le journaliste d' InfoWorld Randall C. Kennedy , qui a identifié que le changement avait en fait été effectué dans MDAC 2.6 mais n'a jamais été documenté. Il a été découvert lors du test des charges de travail des bases de données client/serveur sur un ordinateur Windows XP ; InfoWorld affirme que bien que l'utilisation globale du processeur du serveur n'ait augmenté que de 8 pour cent en utilisant TCP/IP, les changements de contexte par seconde ont chuté de plus de 150 pour cent (ce qui est bien entendu impossible car vous auriez alors un taux de % ou 60% selon la planète sur laquelle se trouvait l'auteur au moment de la rédaction) pour une charge de travail de 10 utilisateurs. Ils n'étaient pas impressionnés par le fait qu'un changement fonctionnel fondamental du comportement par défaut de Net-Lib se soit produit sans plus qu'une mention en passant dans un document sans rapport. Les utilisateurs de Windows XP ont également parfois rencontré des problèmes de connexion à SQL Server car SQL Server tente d'utiliser les certificats qu'il trouve sur l'ordinateur local, mais s'il y a plus d'un certificat disponible, il ne sait pas lequel utiliser. Lors de la tentative d'utilisation de Microsoft Analysis Services 2000 RTM, une erreur s'affichait parfois lors de la tentative de navigation dans les cubes. Microsoft a également découvert un problème dans le programme d'installation de Windows 95 , Windows 98 et Windows Me qui empêchait le programme d'installation de MDAC de revenir en arrière lorsqu'il rencontrait une erreur d'installation.

Plusieurs problèmes de sécurité ont été résolus par Microsoft pour MDAC 2.7. David Litchfield de Next Generation Security Software Ltd a signalé une vulnérabilité de sécurité qui résulte du fait que l'une des fonctions ODBC dans MDAC qui est utilisée pour se connecter aux sources de données contenait un tampon non contrôlé. Une autre vulnérabilité qui a été corrigée était celle selon laquelle un attaquant pouvait répondre à un message de découverte SQL Server diffusé par les clients avec un paquet spécialement conçu qui pouvait provoquer un débordement de la mémoire tampon. Une autre faille a été trouvée grâce à laquelle le code pouvait être exécuté à distance lorsque l'attaquant répondait à la diffusion avec un autre paquet spécialement conçu.

MDAC 2.8

MDAC 2.8 a été publié en août 2003 et distribué avec Microsoft Windows Server 2003 , ainsi que sur le site Web Data Access Technologies de Microsoft . Il n'a pas introduit de nouvelles fonctionnalités dans le produit mais a corrigé un certain nombre de bogues et de problèmes de sécurité - un fichier reg (automatise les modifications du registre) a été supprimé, ce qui a fait fonctionner le serveur dans un mode "dangereux" dans lequel le RDS pouvait être exploité pour obtenir un accès non autorisé au système et une nouvelle restriction a été imposée sur la longueur de la chaîne de requête Shape. Il y a également eu plusieurs modifications de l'administrateur ODBC.

Le 23 mai 2005, Brad Rhodes (responsable de programme principal de Microsoft Data Access Technologies) a annoncé que MDAC 2.8 SP1 était le dernier redistribuable autonome de MDAC livré par Microsoft. MDAC est désormais un composant officiel du système d'exploitation de Microsoft, bien qu'il fournisse des correctifs de bogues et de sécurité continus aux versions précédemment publiées de la version distribuable sur le Web. Cependant, Microsoft a créé un nouveau composant appelé SQL Native Client (SQLNCLI), qui est une API d'accès aux données autonome qui a combiné les bibliothèques OLE DB et ODBC en une seule DLL. Il a été formé pour être indépendant de MDAC, qui dépend désormais de l'état dans lequel se trouve le système d'exploitation - un développeur est désormais lié à cette bibliothèque et évite les situations où une mise à jour du système d'exploitation qui met à jour MDAC interrompt les applications construites sur une version différente de MDAC.

Windows 7 SP1 a rompu la compatibilité ascendante de MDAC 2.8. Les logiciels compilés sur Windows 7 SP1 qui reposent sur MDAC ADO ne fonctionneront pas sur les versions de Windows antérieures à Windows 7 SP1 (y compris Windows 7 RTM, Vista, XP). Microsoft a fourni des solutions pour contourner ce problème pour certaines applications, mais les applications VBA restent affectées. Le correctif de ce problème a été publié en février 2012.

DAC Windows 6.0

Windows Vista n'utilisera plus MDAC, mais utilisera à la place Windows DAC, qui se compose de versions mises à jour des composants ADO, OLE DB et ODBC. Selon Microsoft, "Windows DAC inclut quelques modifications pour fonctionner avec Windows Vista, mais est presque entièrement équivalent fonctionnellement à MDAC 2.8."

Vérification des versions

Il existe deux manières de vérifier la version de MDAC installée sur un ordinateur. Pour Windows 2000, Windows XP et Windows Server 2003, une méthode de vérification consiste à utiliser le programme Component Checker de Microsoft , qui compare la valeur de chaque DLL MDAC installée au fichier manifeste MDAC. La deuxième méthode consiste à vérifier la clé HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVerdans le registre Windows . Microsoft note que ces informations peuvent être incorrectes pour les versions de MDAC antérieures à 2.1 par rapport aux versions des fichiers MDAC installés sur le système

Version Date de sortie Inclus avec Caractéristiques Les problèmes de sécurité
1,0 août 1996
  • CAN – IIS 3.0
  • SDK OLE DB 1.1 (OLE DB 1.1 et ADO 1.0) – Visual Studio
  • Tous les composants inclus dans Visual Interdev 1.0 et avec Active Server Pages (publiés dans IIS 3.0)
  • ODBC 3.0
  • OLE DB 1.1
  • ADO 1.0
  • CAN 1.0
  • Pilotes ODBC pour les bases de données Access/Jet, SQL Server et Oracle

Aucun bulletin publié

1.5

septembre 1997 – mars 1998
  • Microsoft Internet Explorer 4.0
  • Internet Client SDK 4.0 (à partir du CD délivré par Microsoft PDC)
  • ODBC 3.5
  • OLE DB 1.5
  • ADO 1.5
  • RDS 1.5 (remplacé ADC 1.0)
1.5a Septembre 1997–Mars 1998

Version de service

1.5b Septembre 1997–Mars 1998

Version de service

1.5c Septembre 1997–Mars 1998
  • Correction de problèmes avec le threading ADO et le pool de connexions ODBC
  • Livré uniquement avec les composants d'exécution ADO/MDAC
2.0 1 juillet 1998
  • Visual Studio 98
  • SDK d'accès aux données 2.0
  • SDK ODBC 3.5
  • SDK OLE DB 1.5
  • OLE DB pour la spécification OLAP
2.0SP1 1 juillet 1998
  • Windows NT 4.0 SP4

Correction de l'an 2000 pour Windows NT 4.0

2.0SP2 1 juillet 1998
  • Site Web de Microsoft

Correction de l'an 2000 pour toutes les plateformes

2.1 11 juillet 1998
  • SQL Server 7.0
  • SQL Server 6.5 SP5
  • ADO 2.1
  • RDS 2.1
  • OLE DB 2.1
  • Fournisseur OLE DB pour ODBC, SQL Server et Oracle
  • JRO 2.1
  • pilote ODBC
  • Pilote d'avion
  • RDO
2.1 SP1 15 mars 1999
  • Internet Explorer 5.0
  • Windows 98 Deuxième Édition
2.1 SP1a (GA) 1er avril 1999
  • Bureau 2000
  • Back Office 4.5
  • Visual Studio 98 SP3
  • Internet Explorer 5.0a (installation minimale)
2.1 SP2 juillet 1999
2.5 17 février 2000
  • Windows 2000
  • ADO 2.5
  • ADO MD 2.5
  • ADOX 2.5
  • RDS 2.5
  • OLE DB 2.5
  • Fournisseur OLE DB pour le pilote ODBC pour :
    • SQL
    • Serveur
    • Recherche de serveur de site
    • Publication Internet
    • Jet 4.0 (accès 2000)
    • Oracle
    • Services d'indexation (serveur d'index)
    • Services de mise en forme de données Microsoft
    • Services OLAP
    • Forfaits DTS
    • Services d'annuaire Microsoft
    • Fichier plat DTS du serveur
    • Fournisseur simple OLE DB
  • JRO 2.5
  • ODBC 3.51
  • un pilote ODBC pour
    • Microsoft Access
    • serveur SQL
    • Microsoft Excel
    • Texte
    • Visual FoxPro
    • FoxPro VFP
    • dBase
    • VFP dBase
    • Paradoxe
    • Oracle
  • Pilotes d'avion pour :
    • Exceller
    • Microsoft Exchange
    • Accès
    • fichiers texte
    • Lotus 1-2-3
    • Paradoxe
    • xBase
2.5 SP1 31 juillet 2000
  • Windows 2000 SP1
2.5 SP2 avril 2000
  • Windows 2000 SP2
2.5 SPS3 décembre 2003
  • Windows 2000 SP3
2.6 Septembre 2000
  • SQL Server 2000
Non inclus (installé manuellement) :
  • Microsoft Jet
  • Fournisseur Microsoft Jet OLE DB
  • Pilotes de base de données de bureau ODBC
2.6 SP1 Mai 2001
  • SQL Server 2000 SP1
2.6 SP2 Mai 2002
  • SQL Server 2000 SP2
2.7 octobre 2001
  • Windows XP
2.8 août 2003
  • Serveur Windows 2003

Correction de bugs et problèmes de sécurité

2.8 SP1 mai 2005
  • SQL Server 2000 SP4
  • Windows XP SP2

Bugs corrigés

2.8 SP2 Mars 2005
  • Windows Server 2003 SP1
9.0 Jamais sorti
  • Visual Studio 2005 Beta 1 (Supprimé dans les versions ultérieures)
  • SQL Server 2005 Beta 1 (Supprimé dans les versions ultérieures)
Windows DAC 6.0 (une variante de MDAC à utiliser avec Vista) novembre 2006
  • Numéro de version synchronisé avec la version Windows
  • Pas d'autres nouvelles fonctionnalités

Les références

Lectures complémentaires

Liens externes