The above provides a link to a white paper that provides basic information on ADO technologies and a discussion of versions of MDAC up to version 2.0. For a similar discussion of ADO technologies and information on MDAC 2.5, look at the white paper located at the following URL:
- OLE DB
Open Database Connectivity (ODBC), is an international standard for manipulating relational data using SQL query syntax across disparate datasources. ODBC has the advantage of being an international standard that allows you to manipulate a vast array of relational datasources through numerous ODBC Drivers from both Microsoft and third party vendors. The key disadvantage of ODBC is that it is limited to relational, SQL-syntax based data.
OLE DB is Microsoft's strategic low-level interface to data across the organization. OLE DB is an open specification designed to build on the success of ODBC by providing an open standard for accessing all kinds of data. OLE DB imposes no specific limitation on either the query syntax, or the structure of the data exposed as long as it can be retrieved in tabular form. An OLE DB Data Provider is analogous to an ODBC Driver, exposing a DataSource to an OLE DB Consumer, such as ADO. An increasing variety of OLE DB Data Providers are being released by both Microsoft and third party vendors. The first OLE DB Data Provider, the Microsoft OLE DB Provider for ODBC Drivers, enables you to expose any ODBC DataSource to an OLE DB consumer.
ADO is Microsoft's strategic, language-neutral, high-level interface to data exposed by OLE DB. ADO provides consistent, high-performance access to data, whether you are creating a front-end database client or middle-tier business object using an application, tool, language, or even an Internet browser. ADO is the single data interface you need to know for 1 to n-tier client/server and Web-based data-driven solution development. ADO is the definitive OLE DB Consumer, although you could write your consumer application using C++ directly to a OLE DB provider.
The Microsoft Remote Data Service (RDS) allows you to use an ADO recordset remotely across one of three protocols (HTTP, HTTPS, or DCOM). RDS was originally intended for Web-based clients, but you are free to implement your RDS client in any development environment or language you choose. You can optionally implement a server side business object for generating and receiving a recordset, or you can use the default business object that RDS provides within its server-side components. You are required to use Internet Information Server (IIS) to host the RDS Server components only if using the HTTP or HTTPS protocols. Using DCOM to marshal objects (recordset or otherwise) with RDS eliminates the IIS dependency. RDS provides the advantages of client-side caching of data results, updateable data, and support for some data-aware ActiveX controls.
The Microsoft Data Access Components (MDAC), is the combination of these four technologies as well as various ODBC Drivers and OLE DB Data Providers. MDAC also includes, increasingly with version 1.5 and later, extensions to both OLE DB and ADO, most notably (but not limited to) On- line Analytical Processing, or Multi-Dimensional data. There have been three significant releases of MDAC components, but only one of those releases was publicly known as MDAC. MDAC 1.0 did not ship as a coordinated, stand-alone setup program, but was included piecemeal with various Software Development Kit (SDK)'s and products. MDAC 1.5 did feature a complete, stand-alone installation and was also included with various SDK's and products. MDAC 2.0 was renamed to the Data Access SDK, and both the ODBC and OLE DB SDK's were rolled into the Data Access 2.0 SDK. Microsoft refers to MDAC 2.0 components as the run-time (non-SDK elements) of the Data Access 2.0 SDK.
For the sake of clarity, we will refer to a MDAC stack as a specific collection of ODBC, OLE DB, ADO, and RDS runtime components. For example, the MDAC 1.0 stack contained ODBC 3.0, OLE DB 1.1, ADO 1.0 and the Advanced Data Connector 1.0. (The Advanced Data Connector was the immediate precursor to the Remote Data Service released in MDAC 1.5). The MDAC 1.5 stack included ODBC 3.5, OLE DB 1.5, ADO 1.5, and RDS 1.5. The MDAC 2.0 stack includes ODBC 3.51, OLE DB 2.0, ADO 2.0, RDS 2.0, OLE DB for OLAP extensions and ADO/MD.
We will refer to MDAC redistribution as the mechanism that installs just the run-time components for a given MDAC stack. Anything else, which includes the ODBC 3.X SDK, OLE DB 1.X SDK, and the MDAC stand-alone setup, contains a superset of the redistribution, adding samples, documentation, headers, libraries, and so forth. You would use a MDAC redistribution with the installation used to distribute your application to customers, and you would use the MDAC or SDK setups to install on your development computer to create those applications. This distinction is especially important to remember when we discuss MDAC 1.5 setup and redistribution scenarios.
Universal Data Access, the Microsoft Data Access Components, the Data Access SDK, the ODBC SDK, and the OLE DB SDK, are all different faces for Microsoft's database strategy.
The MDAC 1.0 StackMDAC 1.0 existed more as concept than a coordinated, stand-alone setup program. MDAC 1.0 components included ODBC 3.0, OLE DB 1.1, ADO 1.0, and the Advanced Data Connector 1.0. The Advanced Data Connector, at the time, utilized a subset of the ADO recordset and was independent of ADO. Previously ODBC existed pretty much on its own, although the OLE DB 1.0 SDK released in August of 1996 was beginning to point the way towards MDAC. In the Winter of 1996, the MDAC 1.0 stack was released in a variety of different distribution mechanisms, but without the centralized or coordinated effort that arrived with MDAC 1.5.
ODBC 3.0 shipped with the ODBC 3.0 SDK (available at the time through Web download), as well as Internet Information Server 3.0 and the OLE DB 1.1 SDK. OLE DB 1.1 and ADO 1.0 shipped with the OLE DB 1.1 SDK (available with Visual Studio 97 or at the time through Web download), and with Internet Information Server 3.0. The Advanced Data Connector shipped with Internet Information Server 3.0, as well as being available (at the time) on the Web as a downloadable .cab file.
MDAC 1.0 included ODBC Drivers for Access/Jet, SQL Server, and for the first time, a Microsoft ODBC driver to expose Oracle data. The Microsoft OLE DB Provider for ODBC Drivers was the first and only OLE DB provider released with MDAC 1.0.
Visual Studio 97 was actually mix-and-match as to which product installed which version of ODBC (and with it potentially OLE DB and ADO). Visual Interdev, for example, included Active Server Pages, which was the component of Internet Information Server 3.0 that installed ODBC 3.0, OLE DB 1.1 and ADO/ADC 1.0. However, Visual Basic 5.0 installed ODBC version 2.65 and no OLE DB or ADO components. Visual C++ 5.0 installed ODBC 2.65, but it also included install options for Visual Studio 97 with a choice of installing the OLE DB 1.5 SDK, which gave you the entire MDAC 1.0 stack.
In general, mixing and matching ODBC drivers with the ODBC Driver Manager/Core Components is a safe thing. As long as the ODBC Driver Manager is more recent than the ODBC drivers, although the Product Group makes great pains to ensure that the ODBC Driver Manager and Microsoft ODBC Drivers are backwardly compatible.
The MDAC 1.5 StackWith MDAC 1.5, more coordination was brought to both the setup of MDAC components as well as redistribution. MDAC 1.5 consisted of ODBC 3.5, OLE DB 1.5, ADO 1.5, and the Remote Data Service 1.5. The Remote Data Service is the successor to the Advanced Data Connector, but was renamed to reflect that it is increasingly a feature of ADO. With MDAC 2.0, the documentation for RDS is included in the same location as for ADO.
Once again, portions of MDAC 1.5 were included with various SDK's and products. MDAC 1.5 was released on the Web as a stand-alone setup, as well as within the Windows NT 4.0 Option Pack and portions of MDAC 1.5 were included in Internet Explorer 4.x, specifically the RDS Client components. Windows 98 includes MDAC 1.5 components, and both the OLE DB 1.5 SDK and the ODBC 3.5 SDK's contain MDAC 1.5 components.
MDAC 1.5 included the ODBC drivers for Microsoft Access/Jet, SQL Server, and a significant update to the Microsoft Oracle ODBC Driver. In addition, at the same time two other OLE DB Providers were available from Microsoft (although not included with the MDAC Stack). OLE DB providers for the Active Directory Services as well as for Microsoft Index Server were available separately from the MDAC stack. Both of these providers leveraged OLE DB's strengths in ways ODBC could have never supported, specifically for using non-SQL query syntax to retrieve data through the OLE DB data provider from a non-relational DataStore.
The Microsoft Data Access Components version 1.5 has had five(+) separate releases, each with different versions of the Open Database Connectivity (ODBC) 3.5, OLE DB 1.5, ActiveX Data Objects (ADO) 1.5, and Remote Data Service (RDS) 1.5 components, as well as ODBC Drivers and OLE DB providers. The first two releases, other than file version stamping, (and bugs fixed in the setup) had no significant differences. An explanation of each follows:
- Internet Explorer 4.0: Shipped with Internet Explorer 4.0, Internet Client SDK 4.0, integrated within the setup of both products.
- MDAC 1.5 (PDC): Updated the components shipping with Internet Explorer, and was only available on the 1997 Professional Developers Conference CD within the MDAC Stand-Alone setup program.
- MDAC 1.5a: Available on the Web from 10/6/97 to 12/20/97 within the MDAC Stand-Alone setup program.
- MDAC 1.5b: Available with the Windows NT 4.0 Option Pack, the MDAC Stand-alone was actually integrated within the Option Pack (and not as a separate setup).
- MDAC 1.5c: Available on the Web after 12/20/97, both with the MDAC Stand-Alone and as a smaller MDAC redistribution that just installed the run-time components. MDAC 1.5c also matches bits included with the OLE DB 1.5 and ODBC 3.5 SDK's. The actual bug fixes between 1.5b and 1.5c were incremental but significant, fixing problems with the ADO threading and the ODBC Connection Pooling.
- Windows 98 and/or the Internet Explorer 4.01 Service Pack 1: Both Internet Explorer 4.01 Service Pack 1 and Windows 98 contain a subset of mixed versions of MDAC. They are the only place you can obtain a modified version of ADO/RDS (essentially MDAC 1.5d), however, they do not ship a complete ODBC or OLE DB, and the versions of the ODBC/OLE DB files they do ship are older than MDAC 1.5c. The most significant change between "1.5d" and "1.5c" is that Remote Data Service clients using DCOM to marshal objects from a server no longer needed to mark the business object as safe for scripting and initialization.
The MDAC 2.0 StackMDAC 2.0 is distributed within the Data Access 2.0 SDK, which combines and updates the contents of MDAC 1.5, the ODBC 3.5 SDK and the OLE DB 1.5 SDK, and the OLE DB for OLAP Specification. The Data Access SDK combines all of the run-time components, documentation, samples, and also provides an integrated redistribution in the <drive>:\msdasdk\redist directory. Whereas previously the MDAC 1.5 stand- alone and redistribution shipped separately (occasionally creating confusion as to which one was which), the Data Access SDK is completely self contained and integrated. The 40M size of the SDK versus the 7.9M size of the MDAC 2.0 redistribution also helps make the difference clear.
The MDAC 2.0 redistribution comes in one version, and installs all of the MDAC 2.0 components as well as the ODBC Drivers/OLE DB Providers for Microsoft Access/Jet, Oracle and SQL Server. The Visual FoxPro ODBC driver is also included in the redistribution. Previously this driver was only available through web download.
Visual Studio 6.0 also ships MDAC 2.0 components, including a subset of the full Data Access SDK. The Data Access SDK available on the Web at the following site is actually newer than the Visual Studio 6.0 version: