The MDAC 2.5 Stack and Windows File Protection
Author: Prash Shirolkar
Summary: This document provides in-depth information on the Microsoft Data Access Components (MDAC) 2.5 redistribution stack, as well as the effect of Windows File Protection on its files on a computer running Microsoft® Windows® 2000 or Microsoft Windows Millennium—including information about what you can do to restore a damaged installation on Windows 2000 or Windows Millennium. This document also provides a breakdown of the MDAC 2.5 redistribution stack into its individual components and then addresses the characteristics of each technology. (12 printed pages)
Note
Even though a breakdown of the MDAC stack is provided, an all or nothing policy with regards to MDAC 2.5 redistribution is strongly recommended. Please refer to the End User License Agreement (in Mdaceula.txt) for details about redistributing MDAC 2.5. Additionally, from here on, the MDAC 2.5 redistribution stack will be referred to as the MDAC 2.5 stack. Finally, Windows File Protection (WFP) was initially referred to as System File Protection (SFP), hence any reference to WFP implies SFP as well.
Contents
Introduction
Windows File Protection and MDAC 2.5
The MDAC 2.5 Stack and Its Components
ADO
ODBC
OLE DB
SQL Server
Oracle
Microsoft Jet
RDS
Visual FoxPro
References
Introduction
The MDAC 2.5 stack can be broadly categorized into the ActiveX Data Objects (ADO), OLE DB, Open Database Connectivity (ODBC), Remote Data Services (RDS), Microsoft Jet, and Microsoft Visual FoxPro® components. These components are highly dependent on one another. For example, ADO components are nonfunctional without the ODBC core, OLE DB core, and the back-end database's OLE DB provider or ODBC driver.
Windows File Protection and MDAC 2.5
A persistent issue in the history of the Windows operating systems is the ability of installation programs not affiliated with the operating system to overwrite shared system files. After such installations, the user often experiences unpredictable system performance, ranging from application errors to operating system crashes. This problem affects several types of files, most commonly dynamic-link libraries (DLLs) and executable files (EXEs), and is often referred to as "DLL Hell." (For more details, see The End of DLL Hell, listed in the References section.)
Windows 2000 has a new feature called Windows File Protection (WFP) that prevents the replacement, by installations other than operating system updates, of system files that ship with Windows 2000. By preventing the replacement of essential system files, file version mismatches can now be avoided.
What MDAC files are covered by WFP?
All the MDAC files protected by WFP are listed in the tables in the individual MDAC technology sections of this document. A "1" in the WFP column signifies it is protected by WFP, and a "0" indicates that it is not.
How can a damaged installation of the MDAC 2.5 files on Windows 2000 be repaired without reinstalling the operating system?
Windows 2000 ships with MDAC 2.5. WFP will protect many of the MDAC 2.5 DLLs from being changed. In the rare event that a MDAC 2.5 WFP DLL is corrupted, contact Microsoft Product Support Services for instructions. A corrupted non-WFP file can be overwritten by copying the correct file from the MDAC 2.5 stack.
The MDAC 2.5 Stack and Its Components
The remaining sections of this document delve into each of the MDAC technologies, and each section includes a table that provides the following information:
All file names contained in the given component
Whether each file is under Windows File Protection (0 = no, 1 = yes)
The component release version in which the file is found
A brief description of the file
The file's location
The location column abbreviations are explained in the following table.
Legend |
Meaning |
Example |
\HELP |
<Drive>:\<Windir>\help |
C:\Winnt\help |
\SYS |
<Drive>:\<Windir>\<Systemdir> |
C:\Winnt\System32 |
\OLEDB |
<Drive>:\<programfiles>\<commonfiles>\System\ole db |
C:\Program Files\Common Files\System\oledb |
\ADO |
<Drive>:\<programfiles>\<commonfiles>\System\Ado |
C:\Program Files\Common Files\System\ado |
\RDS |
<Drive>:\<programfiles>\<commonfiles>\System\Msadc |
C:\Program Files\Common Files\System\msadc |
Additionally, some of the components provide their own HTML Help files in \HELP folder.
ADO
ADO is the flagship application programming interface (API) for Universal Data Access (UDA). ADO 2.5 provides new objects, the Record object and the Stream object, that can retrieve data from URLs through the Microsoft OLE DB Provider for Internet Publishing (MSDAIPP). Additionally, traditional ADO objects such as the Connection and Recordset objects, as well as the new ones, can bind directly to a URL and retrieve data. ADO 2.5 also provides support for semi-structured data (also referred to as ragged or nonrectangular data).
In MDAC 2.5, ADO includes the ADOX and ADO MD subcomponents. Apart from the ADO object model, the ADO core components include the resource and rowset helper libraries, as well as the ADO 2.0 and 2.1 type libraries. ADO MD, the high-level object model for exposing multidimensional data, is contained in one DLL (msadomd.dll), as is ADOX (msadox.dll). The ActiveX Data Objects 2.1 Type Library is a new addition MDAC 2.5.
The MDAC 2.5 ADO Stack
Component |
File Name |
WFP |
x86 Version |
Location |
Description |
ADO |
adojavas.inc |
0 |
\ADO |
ADO JavaScript include file |
|
ADO |
adovbs.inc |
0 |
\ADO |
ADO VBScript include file |
|
ADO |
msader15.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects resources |
ADO |
msado15.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects |
ADO |
msado20.tlb |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects 2.0 Type Library |
ADO |
msado21.tlb |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects 2.1 Type Library |
ADO |
msador15.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects |
ADO |
msadrh15.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects rowset helper |
ADOMD |
msadomd.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects (Multidimensional) |
ADOX |
msadox.dll |
1 |
2.50.4403.3 |
\ADO |
ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) |
ODBC
ODBC is still a widely accepted API for database access. It is based on the Call-Level Interface (CLI) specifications from X/Open and ISO/IEC for database APIs and uses Structured Query Language (SQL) as its database access language. It provides the client a unified means, with the same source code, of accessing relational data from different database management systems.
In addition to the thunking DLLs, the ODBC components include the all-important ODBC Driver Manager, the Windows 2000 Component Services (or MTS, if you are using Microsoft Windows NT®) connection pooling manager, the driver manager trace DLL, and the ODBC cursor library. Other components include the ODBC resources file, the installer DLL, and the Driver Configuration program files.
The ODBC Administrator still forms an integral part of the ODBC core, and another file of note is the ODBC HTML Help file that is installed in the \WIN folder.
The MDAC 2.5 ODBC Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
ODBC |
ds16gt.dll |
1 |
3.510.3711.0 |
\SYS |
ODBC 16-bit Driver Setup Generic Thunking |
ODBC |
ds32gt.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Setup Generic Thunking |
ODBC |
mtxdm.dll |
0 |
1997.11.532.0 |
\SYS |
MTS connection pooling—ODBC Driver Manager |
ODBC |
odbc16gt.dll |
1 |
3.510.3711.0 |
\SYS |
ODBC 16-bit Generic Thunking |
ODBC |
odbc32.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Manager |
ODBC |
odbc32gt.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Generic Thunking |
ODBC |
odbcad32.exe |
1 |
3.520.4403.2 |
\SYS |
ODBC Administrator |
ODBC |
odbcconf.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Configuration Program |
ODBC |
odbcconf.exe |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Configuration Program |
ODBC |
odbcconf.rsp |
0 |
\SYS |
ODBC Driver Configuration file |
|
ODBC |
odbccp32.cpl |
1 |
3.520.4403.2 |
\SYS |
ODBC Control Panel |
ODBC |
odbccp32.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Installer |
ODBC |
odbccr32.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Cursor Library |
ODBC |
odbccu32.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Cursor Library |
ODBC |
odbcinst.chm |
0 |
\HELP |
ODBC HTML help |
|
ODBC |
odbcint.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Resources |
ODBC |
odbctrac.dll |
1 |
3.520.4403.2 |
\SYS |
ODBC Driver Manager Trace |
OLE DB
OLE DB offers a set of COM interfaces that you can use to access both relational and nonrelational data. OLE DB 2.5 introduced a new set of interfaces designed to incorporate the semi-structured data model. This effectively added support for hierarchical data stores, nonrectangular result sets, and for binding directly to objects through URLs. Some examples of hierarchical stores are file stores and message stores, and examples of nonrectangular data include simple or complex documents, e-mails, and so forth. Support for this kind of access is provided through the OLE DB row and stream objects, direct binding, and scoped operation capability.
Except for the new interfaces, the objects that form the OLE DB core are generally the same. A prominent new addition, however, is the root binder object, which provides a mechanism to directly bind to URLs and retrieve nonrectangular data. Other new features include OLE DB 2.5 runtime routines and OLE DB JavaScript and VBScript include files.
The MDAC 2.5 OLE DB Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
OLE DB |
msdadc.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Data Conversion Stub |
OLE DB |
msdaenum.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Root Enumerator Stub |
OLE DB |
msdaer.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Error Collection Stub |
OLE DB |
msdaosp.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Simple Provider |
OLE DB |
msdaps.dll |
1 |
2.50.4403.2 |
\OLEDB |
OLE DB Interface Proxies/Stubs |
OLE DB |
msdart32.dll |
1 |
2.50.4403.0 |
\SYS |
OLE DB Runtime Routines |
OLE DB |
msdasc.chm |
0 |
\HELP |
OLE DB Service Components HTML Help file |
|
OLE DB |
msdasc.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Service Components Stub |
OLE DB |
msdasql.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Provider for ODBC Drivers |
OLE DB |
msdasqlr.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Provider for ODBC Drivers Resources |
OLE DB |
msdatl2.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Implementation Support Routines |
OLE DB |
msdatt.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Temporary Table Services |
OLE DB |
msdaurl.dll |
1 |
9.1.4403.0 |
\OLEDB |
OLE DB Root Binder Stub |
OLE DB |
msxactps.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Transaction Proxies/Stubs |
OLE DB |
oledb32.dll |
1 |
2.50.4403.3 |
\OLEDB |
OLE DB Core Services |
OLE DB |
oledb32r.dll |
1 |
2.50.4403.2 |
\OLEDB |
OLE DB Core Services Resources |
OLE DB |
oledb32x.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Extensions |
OLE DB |
oledbjvs.inc |
0 |
\OLEDB |
OLE DB JavaScript include file |
|
OLE DB |
oledbvbs.inc |
0 |
\OLEDB |
OLE DB VBS include file |
SQL Server
The list of SQL Server subcomponents has no changes from the MDAC 2.1 version. These subcomponents are associated with the SQL Server ODBC Driver and OLE DB Provider for SQL Server. Again, the breakdown here is based on products rather than dependencies. Therefore, the network libraries are listed under SQL Server OLE DB even though the SQL Server ODBC Driver is dependent on them. Other important subcomponents include the code page translators, the client-configuration utility, SQL enterprise components, and the SQL Server Catalog update.
The MDAC 2.5 SQL Server ODBC and OLE DB Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
SQL Server ODBC |
12520437.cpx |
1 |
\SYS |
SQL Server Codepage Translator |
|
SQL Server ODBC |
12520850.cpx |
1 |
\SYS |
SQL Server Codepage Translator |
|
SQL Server ODBC |
cliconf.hlp |
0 |
\SYS |
SQL Server Client Configuration Help file |
|
SQL Server ODBC |
cliconfg.DLL |
0 |
1999.5.27.0 |
\SYS |
Client Configuration Utility |
SQL Server ODBC |
cliconfg.exe |
0 |
1999.5.27.0 |
\SYS |
Client Configuration Utility |
SQL Server ODBC |
odbcbcp.dll |
0 |
3.70.8.12 |
\SYS |
BCP for ODBC |
SQL Server ODBC |
sqlsodbc.hlp |
0 |
\SYS |
SQL Server ODBC Help |
|
SQL Server ODBC |
sqlsrv32.dll |
0 |
3.70.8.12 |
\SYS |
SQL Server ODBC Driver |
SQL Server ODBC |
sqlstr.dll |
0 |
1999.5.27.0 |
\SYS |
Function DLL for SQL Enterprise Components |
SQL Server ODBC |
sqlwid.dll |
0 |
1999.5.27.0 |
\SYS |
Function DLL for SQL Enterprise Components |
SQL Server ODBC |
sqlwoa.dll |
0 |
1999.5.27.0 |
\SYS |
Function DLL for SQL Enterprise Components |
SQL Server OLE DB |
dbmsadsn.dll |
0 |
1999.5.27.0 |
\SYS |
Pipes Net DLL for SQL Clients |
SQL Server OLE DB |
dbmsrpcn.dll |
0 |
1999.5.27.0 |
\SYS |
RPC Net Library |
SQL Server OLE DB |
dbmsshrn.dll |
0 |
1999.5.27.0 |
\SYS |
RPC Net Library |
SQL Server OLE DB |
dbmssocn.dll |
0 |
1999.5.27.0 |
\SYS |
Net DLL for SQL Server |
SQL Server OLE DB |
dbmsspxn.dll |
0 |
1999.5.27.0 |
\SYS |
NWLINK SPX WINSOCK Net Library |
SQL Server OLE DB |
dbmsvinn.dll |
0 |
1999.5.27.0 |
\SYS |
VINES Net Library |
SQL Server OLE DB |
dbnmpntw.dll |
0 |
1999.5.27.0 |
\SYS |
Pipes Net DLL for SQL Clients |
SQL Server OLE DB |
instcat.sql |
0 |
\SYS |
SQL Server SP Catalog updater |
|
SQL Server OLE DB |
sqloledb.dll |
0 |
7.1.8.14 |
\OLEDB |
OLE DB Provider for SQL Server |
SQL Server OLE DB |
SQLSOLDB.hlp |
0 |
\OLEDB |
SQL Server OLE DB Help |
Oracle
In MDAC 2.5, the Oracle components, including the Oracle Call Interface (OCI) DLL and the code page translator, are unchanged for the Oracle ODBC Driver and the OLE DB Provider for Oracle.
The MDAC 2.5 Oracle ODBC and OLE DB Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
Oracle ODBC |
mscpxl32.dll |
1 |
3.60.3.20 |
\SYS |
ODBC Code Page Translator |
Oracle ODBC |
msorcl32.chm |
0 |
\HELP |
Oracle ODBC Driver Help (Compiled HTML) |
|
Oracle ODBC |
msorcl32.dll |
1 |
2.573.4403.0 |
\SYS |
ODBC Driver for Oracle |
Oracle ODBC/OLE DB |
mtxoci.dll |
0 |
1999.6.854.0 |
\SYS |
MTS - Oracle OCI |
Oracle OLE DB |
msdaora.dll |
1 |
2.50.4403.0 |
\OLEDB |
OLE DB Provider for Oracle |
Microsoft Jet
Microsoft Jet has 28 subcomponents in the MDAC 2.5 stack. Generally, the list is unchanged except for the HTML Help file. The Jet components include the Jet Engine with its numerous ISAMs, the Reconciler library, the Replication library, the Sort library, Expression Service binaries, the Jet ODBC Driver, the OLE DB Provider for Microsoft Jet, and the Microsoft Jet and Replication (JRO) objects.
The MDAC 2.5 Microsoft Jet Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
Jet |
expsrv.dll |
1 |
6.0.0.8540 |
\SYS |
VBA Runtime - Expression Service |
Jet |
msexch40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Exchange ISAM |
Jet |
msexcl40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Excel ISAM |
Jet |
msjet40.dll |
1 |
4.0.2927.4 |
\SYS |
Jet Engine Library |
Jet |
msjint40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Database Engine International DLL |
Jet |
msjter40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Database Engine Error DLL |
Jet |
msjtes40.dll |
1 |
4.0.2927.6 |
\SYS |
Jet Expression Service |
Jet |
msltus40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Lotus 1-2-3 ISAM |
Jet |
mspbde40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Paradox ISAM |
Jet |
msrd2x40.dll |
1 |
4.0.2927.2 |
\SYS |
(R) Red ISAM |
Jet |
msrd3x40.dll |
1 |
4.0.2927.4 |
\SYS |
(R) Red ISAM |
Jet |
msrecr40.dll |
0 |
4.00.2927.2 |
\SYS |
Reconciler Resource Library |
Jet |
msrepl40.dll |
1 |
4.0.2927.2 |
\SYS |
Replication Library |
Jet |
mstext40.dll |
1 |
4.0.2927.6 |
\SYS |
Jet Text ISAM |
Jet |
mswdat10.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Sort Tables |
Jet |
mswstr10.dll |
1 |
4.0.2927.2 |
\SYS |
Jet Sort Library |
Jet |
msxbde40.dll |
1 |
4.0.2927.2 |
\SYS |
Jet xBASE ISAM |
Jet |
vbajet32.dll |
1 |
6.0.1.8268 |
\SYS |
VBA Development Environment - Expression Service Loader |
Jet ODBC |
odbcjet.chm |
0 |
\HELP |
Jet ODBC HTML Help |
|
Jet ODBC |
odbcji32.dll |
1 |
4.0.4403.2 |
\SYS |
ODBC Desktop Driver Pack 3.5 |
Jet ODBC |
odbcjt32.dll |
1 |
4.0.4403.2 |
\SYS |
ODBC Desktop Driver Pack 3.5 |
Jet ODBC |
oddbse32.dll |
1 |
4.0.4403.2 |
\SYS |
(3.0) driver for DBase |
Jet ODBC |
odexl32.dll |
1 |
4.0.4403.2 |
\SYS |
(3.0) driver for Excel |
Jet ODBC |
odfox32.dll |
1 |
4.0.4403.2 |
\SYS |
(3.0) driver for FoxPro |
Jet ODBC |
odpdx32.dll |
1 |
4.0.4403.2 |
\SYS |
(3.0) driver for Paradox |
Jet ODBC |
odtext32.dll |
1 |
4.0.4403.2 |
\SYS |
(3.0) driver for text files |
Jet OLE DB |
msjetoledb40.dll |
1 |
4.0.2927.2 |
\SYS |
OLE DB Provider for Jet |
JRO |
msjro.dll |
1 |
2.50.4403.3 |
\ADO |
Jet and Replication Objects |
RDS
In MDAC 2.5, the list of RDS subcomponents is unchanged from MDAC 2.1. The stack includes the following components and associated resources: the RDSServer.DataFactory object and its handler, the RDS.DataControl object, the RDS ISAPI library, the Data Shaping Service for OLE DB, the OLE DB Persistence Provider, the OLE DB Remoting Provider, and the OLE DB Cursor Service for OLE DB.
The MDAC 2.5 RDS Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
RDS |
adcjavas.inc |
0 |
\RDS |
RDS JavaScript include file |
|
RDS |
adcvbs.inc |
0 |
\RDS |
RDS VBScript include file |
|
RDS |
HANDLER.reg |
0 |
\RDS |
REG file for setting up default RDS Handler |
|
RDS |
handsafe.reg |
0 |
\RDS |
REG file for making RDS always run with a safe handler |
|
RDS |
handunsf.reg |
0 |
\RDS |
REG file for making RDS not require a safe handler |
|
RDS |
msadce.dll |
1 |
2.50.4403.0 |
\RDS |
OLE DB Cursor Engine |
RDS |
msadcer.dll |
1 |
2.50.4403.0 |
\RDS |
OLE DB Cursor Engine Resources |
RDS |
msadcf.dll |
1 |
2.50.4403.0 |
\RDS |
Remote Data Services DataFactory |
RDS |
msadcfr.dll |
1 |
2.50.4403.0 |
\RDS |
Remote Data Services DataFactory Resources |
RDS |
msadco.dll |
1 |
2.50.4403.0 |
\RDS |
Remote Data Services DataControl |
RDS |
msadcor.dll |
1 |
2.50.4403.0 |
\RDS |
Remote Data Services DataControl Resources |
RDS |
msadcs.dll |
1 |
2.50.4403.0 |
\RDS |
Remote Data Services ISAPI Library |
RDS |
msadds.dll |
1 |
2.50.4403.0 |
\RDS |
OLE DB Data Shaping Service |
RDS |
msaddsr.dll |
1 |
2.50.4403.0 |
\RDS |
OLE DB Data Shaping Service Resources |
RDS |
msdaprsr.dll |
1 |
2.50.4403.2 |
\RDS |
OLE DB Persistence Provider Resources |
RDS |
msdaprst.dll |
1 |
2.50.4403.2 |
\RDS |
OLE DB Persistence Provider |
RDS |
msdarem.dll |
1 |
2.50.4403.2 |
\RDS |
OLE DB Remoting Provider |
RDS |
msdaremr.dll |
1 |
2.50.4403.2 |
\RDS |
OLE DB Remoting Provider Resources |
RDS |
msdatsrc.tlb |
1 |
9.0.4403.0 |
\SYS |
Data Source Interfaces |
RDS |
msdfmap.dll |
1 |
2.50.4403.0 |
\RDS |
DataFactory Handler |
RDS |
msdfmap.ini |
0 |
\WIN |
INI file for configuring default RDS Handler |
Visual FoxPro
The Visual FoxPro components include the Visual FoxPro ODBC driver and its corresponding help file.
The MDAC 2.5 Visual FoxPro Stack
Component |
File Name |
WFP |
Version |
Location |
Description |
Visual FoxPro |
drvvfp.chm |
0 |
\HELP |
Visual FoxPro ODBC Driver HTML Help |
|
Visual FoxPro |
vfpodbc.dll |
1 |
6.1.8440.1 |
\SYS |
Visual FoxPro ODBC Driver |
References
Redistributing Microsoft Data Access