The Microsoft Data Access Component ( MDAC , also known as Windows DAC ) is an interrelated Microsoft technology framework that allows programmers a uniform and comprehensive way to develop applications that can access almost any data store. The components include: ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC). There are some components that are not used anymore, such as Microsoft Jet Database Engine, MSDASQL (OLE DB provider for ODBC), and Remote Data Services (RDS). Some components also become obsolete, such as Data Access Objects API and Remote Data Objects.
The first version of MDAC was released in August 1996. At that time Microsoft declared MDAC to be more of a concept than a stand-alone program and did not have extensive distribution methods. Then Microsoft released an upgrade to MDAC as a web-based redistributable package. Finally, newer versions are integrated with Microsoft Windows and Internet Explorer, and in MDAC 2.8 SP1 they stop offering MDAC as a redistributable package.
Throughout its history, MDAC has been the subject of several security holes, leading to attacks such as increased privileges attacks, although vulnerabilities are generally fixed in newer and faster versions. The current version is a 2.8 1 service pack, but the product has many different versions and many of its components have been abandoned and replaced by newer Microsoft technologies. MDAC is now known as Windows DAC in Windows Vista.
Video Microsoft Data Access Components
Architecture
The latest version of MDAC (2.8) consists of several interacting components, all of which are Windows specific except for ODBC (which is available on multiple platforms). The MDAC architecture can be seen as three layers: the programming interface layer, consisting of ADO and ADO.NET, the database access layer developed by database vendors such as Oracle and Microsoft (OLE DB,.NET managed providers and ODBC drivers), and databases itself. These component layers are all available for applications via the MDAC API. The Microsoft SQL Server networking library, an exclusive access method specific to Microsoft SQL Server, is also included in MDAC. Windows application developers are encouraged to use ADO or ADO.NET for data access, the benefit being that users of application programs are not restricted in their database architecture choices except that it must be supported by MDAC. Of course, developers still have a choice of writing apps that directly access OLE DB and ODBC.
Microsoft SQL Server Network Library
The Microsoft SQL Server networking library (also known as Net-Lib) is used by Microsoft SQL Server to read and write data using many different network protocols. Although Net-Lib is specific to SQL Server, Microsoft includes it with MDAC. SQL Server uses Open Data Services (ODS) libraries to communicate with Net-Lib, which interacts directly with the Win32 subsystem of the Windows NT operating system. The SQL Server network libraries are controlled through the use of network client utilities, which are bundled with SQL Server.
Each network protocol that Net-Lib supports has separate drivers (not to be confused with device drivers), and has support for the session layer in its protocol stack. There are two general types of Net-Lib: primary and secondary. The main Net-Lib is composed of Net-Lib and Net-Lib, while there are many secondary Net-Libs, including TCP/IP and named library pipelines ( named pipes is a method of communicating with other processes via a persistent pipeline system-given identity). Microsoft OLE DB Provider for SQL Server (SQLOLEDB) communicates through primary Net-Libs.
Super Socket Net-Lib deals with inter-computer communications and coordinates secondary Net-Libs - although TCP/IP secondary Net-Lib is an exception in that it calls on Windows Sockets 2 API directly. The Banyan VINES, AppleTalk, ServerNet, IPX/SPX, Giganet, and RPC Net-Lib are derived from MDAC 2.5 and beyond. The Network Library router has the task of managing all of these protocols, but now it's just a pipeline called the secondary Net-Lib managed by the router. Super Socket Net-Lib also handles data encryption through the use of the Windows SSL API.
Shared Memory Net-Lib, on the other hand, manages connections between multiple instances of SQL Server on one computer. It uses a shared memory area to communicate between processes. This is inherently safe; there is no need for data encryption between instances of SQL Server that exist on one computer because the operating system does not allow other process access to the instance area of ââshared memory.
Net-Lib can also support login impersonation in the user security context for protocols that support authenticated connections (called trusted connections ). This enables Net-Lib to provide integrated logon authentication mechanisms through the use of Windows Authentication. Windows authentication is not supported on Windows 98 or Windows Me.
OLE DB
OLE DB (also called OLEDB or OLE-DB) allows access to various types of MDAC applications ([data]) store uniformly. Microsoft has used this technology to separate applications from data that can store on data storage websites that need to be accessed. This is done because different applications require access to different types and data sources, and do not need to know how to access the technology-specific functionality. This technology is conceptually divided into consumers and providers . Consumers are applications that require access to data, and providers are software components that expose the OLE DB interface through the use of the Component Object Model (or COM).
OLE DB is the database access interface technology used by MDAC. OLE DB providers can be created to access simple data storage such as text files or spreadsheets, to complex databases such as Oracle and SQL Server. However, because different data storage technologies may have different capabilities, the OLE DB provider may not implement every possible interface available. Available capabilities are implemented through the use of COM objects - the OLE DB provider will map the functionality of the data storage technology to a particular COM interface. Microsoft calls the availability of the interface to be "provider-specific" because it may not apply depending on the database technology involved. In addition, service providers can also increase data storage capabilities; this capability is known as services in the Microsoft language.
The Microsoft OLE DB Provider for SQL Server (SQLOLEDB) is the OLE DB provider that Microsoft provides for Microsoft SQL Server from version 6.5 and above.
Universal data link
Universal data link files (or '.udl files') provide a common user interface to define connection attributes. Users can use the Data Link Properties dialog box to store connection information in a.udl file as an alternative to directly define it by submitting a connection string. As a result, these files provide a convenient level of deception. Additionally, the dialog box specifies a number of alternative OLE DB data provider for various targeted applications.
ODBC
Open Database Connectivity (ODBC) is the native interface that is accessed through a programming language (usually C) that can make calls to the original library. In MDAC, this interface is defined as a DLL. A separate module or driver is required for each database to be accessed. The functionality of the ODBC API is implemented by this particular DBMS driver. The Microsoft-supplied driver on MDAC is called the SQL Server ODBC Driver (SQLODBC), and (as the name implies) is designed for Microsoft SQL Server. Supports SQL Server v6.5 and up. ODBC allows programs to use SQL requests that will access the database without having to know the proprietary interface to the database. It handles SQL requests and converts them into requests that are understood by individual database systems. According to Microsoft, "After SQL Server 2012, the ODBC driver will be updated for the latest server features, including Microsoft Windows Azure SQL Database, and released as Microsoft ODBC Driver for SQL Server."
ADO
The ActiveX Data Object ( ADO ) is a high-level programming interface for OLE DB. It uses a hierarchical object model to allow applications to create, retrieve, update and delete data programmatically from sources supported by the OLE DB. ADO consists of a series of objects and a hierarchical COM-based collection, an object that serves as the container of many other objects. A programmer can directly access ADO objects to manipulate data, or can send SQL queries to a database via some ADO mechanism. ADO consists of nine objects and four collections.
The collection is:
- Columns: This collection contains a set of Field objects. Collections can be used either in Recordset objects or in Record objects. In the Recordset object, each Field object that forms a Fields collection corresponds to a column in the Recordset's object. In the Record object, Fields can be either absolute or relative URLs that point to a tree-structured namespace (used for semi-structured data providers such as Microsoft OLE DB Provider for Internet Publishing) or as a reference to the corresponding default Stream object. with the Record object.
- Properties: Objects can have more than one Property object, which is contained in the Property object collection.
- Parameters: The Command object can have several Parameter commands to change its predefined behavior, and each Parameter object is in the Parameter collection of the Command object
- Error: All errors the provider made were passed to the Error object pool, while the Error collection itself is contained in the Connection object. When an ADO operation creates an error, the collection is removed and a new set of Error objects is created in the collection.
ADO.NET is the latest version of ADO (after ADO 2.8, now commonly referred to as ADO Classic) and is part of the MDAC 2.8 stack with classic ADO. It's built around Microsoft.NET. Although sometimes seen as an evolutionary step by ADO, some fundamental structural changes are made by Microsoft. ADO.NET goes through. NET Managed Provider, a modified version of an OLE DB provider designed specifically for.NET. The object structure is no longer built around the Recordset object. Instead the Dataset object is used to hold data collected from various sources. It's transparent to programmers. Unlike the old ADO Recordset, Dataset design promotes the use of disconnected data. Conceptually, the Dataset object can be seen as a small relational database in memory in itself that allows manipulation of data in any direction. To propagate changes back to the database, DataAdapter objects are used that transfer data from between data sources and DataSet objects. The cursor is also no longer used in ADO.NET, replaced with the DataReader object, which is used to efficiently process large lists of recordings one by one without saving them.
Maps Microsoft Data Access Components
Obsolete and obsolete components
MDAC is a growing component framework. Thus, there are some components that were previously part of it but have since been abandoned or removed completely from the framework.
Microsoft Jet and JRO Database Engine
Jet stands for Joint Engine Technology and is the database engine used for Microsoft Access, Microsoft Exchange Server and Visual Basic. Jet is part of the Relational Database Management System (RDBMS) and offers a single interface that other software can use to access Microsoft databases. Jet also provides support for security, referential integrity, transaction processing, indexing, recording and locking pages, and data replication. In newer Jet versions, the machine expanded to run SQL queries, store character data in Unicode format, create views, and enable bidirectional replication with Microsoft SQL Server. Since then it has been replaced by MSDE.
There are three modules for Jet. One is the Native Jet ISAM Driver , a Jet dynamic link library (DLL) that can directly manipulate Microsoft Access (MDB) database files, which is a modified form of the Access Sequential Access Method (ISAM) database. One of the other modules is ISAM Drivers , DLLs that allow access to the ISAM database, among which are Xbase, Paradox, Btrieve and FoxPro files. The last module is the Data Access Object (DAO) DLL , DAO lets the programmer access the Jet engine. It's basically an object-oriented data language used by Basic Access and Visual Basic application developers to access Jet.
Similarly, the Microsoft Jet OLE DB Objects and Replication Provider (JRO) that allows replication between Jet data sources has been removed from MDAC 2.6
MSDASQL and ODBC Oracle
The Microsoft OLE DB Provider for ODBC, or MSDASQL
, is the OLE DB provider to allow ActiveX Data Objects access to the database through any ODBC driver. Microsoft provides some OLE-DB providers (for Indexing Services, Active Directory, Jet, SQL Server, Oracle ( MSDAORA
) and Internet Publishing), but unless directed otherwise, ADO by default uses MSDASQL as the default giver. After MDAC 2.5, both Oracle and MSDASQL ODBC drivers support Oracle 7 and partially support Oracle 8i. Unsupported features are:
- CLOB, BLOB, BFILE, NCHAR, NCLOB, and NVARCHAR2 Oracle data types
- Unicode support for Oracle 7.x and 8i
- some client instances from Oracle
- nested outer joins
Microsoft initially no longer used the MSDASQL component for their 64-bit operating system and the Microsoft ODBC driver was later replaced by the.NET Managed Oracle Provider, which supports Oracle 9i. However, Windows Server 2008 and Windows Vista SP1 shipped with a 64-bit version of MSDASQL.
Remote Data Services (RDS)
Remote Data Services (RDS) allows the retrieval of a set of data from the server, which is then changed by the client and then sent back to the server for further processing. With the popular adoption of Transact-SQL, which extends SQL with programming constructs such as loops and conditional statements, this becomes less important and ultimately no longer used in MDAC 2.7. Microsoft generates SOAP Toolkit 2.0, which allows clients to do this via open XML-based standards.
SQLXML
SQLXML is designed for SQL Server 2000, but it's been left with MDAC 2.6. This enables Microsoft's relational database to be viewed by XPath and allows the data to be viewable as an XML file. This is not actually left out but has been removed from the newer version of MDAC, although Microsoft provides it as a downloadable component and will support it on their 64-bit operating system.
Outdated components
Some components have been completely removed from MDAC by Microsoft and are no longer supported. They:
- ESQL/C: Embedded SQL (also known as E-SQL or ESQL/C) is a way of using SQL when programmed in Visual C. Microsoft dropped support for this after SQL Server 6.5 released, although they license multiple run-time ESQL/C environments to a company called Micro Focus, which develops COBOL compilers and tools
- DAO: DAO, or Object Data Access is an object-oriented interface created by Microsoft that allows early versions of Microsoft Access and Visual Basic to access the Jet database engine. Then (in version 3.5) it is able to bypass the Jet engine at once and directly access the ODBC data source.
- RDO: The Remote Data Object, or RDO, is a Microsoft technology that enables the creation of interfaces that directly call ODBC. RDO version 2.0 is the final version developed by Microsoft.
- DB-Library: C-based API that allows applications to interact with SQL Server. This will not be supported on any product after SQL Server 2000, and no features are added after SQL Server 6.5.
History
Microsoft has released several versions of MDAC from time to time. Distribution methods vary and their sets are different for each version.
MDAC 1.0
MDAC 1.0 was first released in August 1996. According to Microsoft, "MDAC 1.0 exists more as a concept than a coordinated and stand-alone arrangement program." The MDAC 1.0 stack consists of ODBC 3.0, OLE DB 1.1, ADO 1.0, and Advanced Data Connector (ADC) 1.0 - which according to Microsoft is the precursor to Remote Data Services from MDAC 1.5. It also includes ODBC drivers for Access/Jet, SQL Server and Oracle databases. MDAC 1.0 was released through several mechanisms: Advanced Data Connector shipped with Internet Information Server (IIS) 3.0 and as a downloadable cab file; OLE DB 1.1 and ADO 1.0 are shipped with the OLE DB 1.1 SDK, which is included with Visual Studio 97 and can also be downloaded. MDAC 1.0 comes with Active Server Pages, which comes with IIS 3.0, and also comes with Visual InterDev 1.0.
MDAC 1.5
MDAC 1.5 was released between September 1997 and March 1998, and involved a more centralized distribution mechanism than MDAC 1.0. It was released with Microsoft Internet Explorer 4.0, Internet Client SDK 4.0 and via CD-ROM provided at the Professional Developers Conference 1997 (PDC). There are five versions of MDAC 1.5:
- MDAC 1.5 (preliminary release): is included with Internet Explorer 4.0 and the Internet Client SDK.
- MDAC 1.5a: can be downloaded from the Microsoft website
- MDAC 1.5b: comes with Windows NT 4.0 Option Pack & amp; Office 97
- MDAC 1.5c: fixed issues with ADO threading and ODBC Connection Pooling and distributed through the Microsoft website. It only comes with the time component of the ADO/MDAC process.
- MDAC 1.5d: is included with the Windows 98 service pack and Internet Explorer 4.01 1.
Various versions of MDAC 1.5 consist of:
- ODBC 3.5
- OLE DB 1.5
- ADO 1.5
- Distance Data Service 1.5, which replaces the Advanced Data Connector.
This MDAC version has a security flaw that makes it vulnerable to increased privilege attacks. The vulnerability caused a good system IIS and MDAC are installed to give the web users the unauthorized ability to execute shell commands on an IIS system as a privileged user. This allows attackers to use MDAC into SQL tunnels and other ODBC data requests via public connection to private back-end networks when on multi-homed Internet-connected IIS systems. It also allows users to gain unauthorized access to files that are safe and not published on the IIS system
MDAC 1.5 is the latest release of data access components supported under Windows NT 3.51 SP5.
MDAC 2.0
MDAC 2.0 is distributed with SDK Data Access 2.0 and includes MDAC 1.5, ODBC 3.5 SDK and OLE DB 1.5 SDK, and OLE DB for OLAP Specification. It also includes many updates for core products, including security features added to RDS that prevent it being used maliciously as an IIS server. This version is included in Windows NT 4.0 SP4, and also with Visual Studio 6.0, which comes with a Full Access Data SDK.
MDAC 2.1
MDAC 2.1 is distributed with SQL Server 7.0 and SQL Server 6.5 SP5. MDAC 2.1 SP1 is distributed with Internet Explorer 5 and MDAC 2.1 SP1a (GA) is distributed with Microsoft Office 2000, BackOffice 4.5 and Visual Studio 98 SP3. However, none of the MDAC versions are released to the general public via the world wide web. MDAC 2.1 SP2 is distributed from the Microsoft website. The components that are included with 2.1 are:
- ADO 2.1
- RDS 2.1
- OLE DB 2.1
- OLE DB Provider for ODBC, SQL Server, and Oracle
- JRO 2.1
- Jet driver
- RDO.
This version has a security vulnerability where an uncontrolled buffer can allow high privileges attacks. It was discovered some time later and it affected MDAC 2.1, 2.5 and 2.6 and was resolved in the future
MDAC 2.5
MDAC 2.5 was released on February 17, 2000 and distributed with Windows 2000, and the MDAC service pack was released in parallel with the Windows 2000 service pack. They are also distributed through the Microsoft website. Three service packs released. Components included with 2.5 are:
- ADO 2.5
- ADO MD 2.5
- ADOX 2.5
- RDS 2.5
- OLE DB 2.5
- many OLE DB Providers
- JRO 2.5
- ODBC 3.51
- many ODBC drivers
- many Jet drivers.
Some problems are found in this version of MDAC. When using OLE DB Session Pooling, Microsoft COM will try to continue loading and unpacking OLE DB, and conflicts can arise that cause OLE DB Session Pooling to run on 100% CPU usage. This is then fixed. Microsoft publishes a complete list of bugs fixed in MDAC 2.5 Service Pack 2 and MDAC 2.5 Service Pack 3. Security vulnerabilities also exist (later fixed) where unmarked buffers are found in SQL Server Drivers. This defect was introduced in MDAC 2.5 SP2.
MDAC 2.6
MDAC 2.6 was released in September 2000 and distributed over the web and with Microsoft SQL Server 2000 MDAC 2.6 RTM, SP1 (released June 20, 2001), and SP2 (released June 11, 2002) distributed in parallel with Microsoft SQL Server 2000 service pack, and can be also downloaded from the Microsoft website.
Starting with the MDAC version, Microsoft Jet, Microsoft Jet OLE DB Provider, and ODBC Desktop Database Drivers are not included. Instead, it can be installed manually. Microsoft also released a warning alert that MDAC 2.6 should not be installed on SQL Server 7.0 Cluster, because "if you install MDAC 2.6 or later on every node in the cluster, directly or through the installation of other programs, it can cause major disaster. Server Agent or other SQL Server services. "This issue affects Veritas Software Backup Exec 9.0 for Windows Server, as it installs Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) as its database. Revision 4367 installs MDAC version 2.6 SP2 while revision 4454 installs MDAC version 2.7 SP1, which has no issues
MDAC 2.7
MDAC 2.7 was released in October 2001 through the Microsoft website. The refresher release was released in April 2002 through the release of Windows XP and through the Microsoft website. Version 2.7 is available in English US, Chinese (Traditional and Simplified), German, Japanese, Korean, Brazilian Portuguese, Czech, Danish, Greek, Slovak, Slovenian, Spanish, Finnish, French, Hungarian, Italian, Dutch, Norwegian, Polish, Portuguese, Russian, Swedish, and Turkish. Hebrew and Arabic languages ââare only available through Windows XP.
The main feature change is support for Microsoft 64-bit operating system, but support for Banyan VINES is also derived from this version of MDAC. There are a few known issues: MDAC 2.7 continues to cause connectivity issues on clustered servers running Microsoft SQL Server 6.5 or SQL Server 7.0, with no solution provided by Microsoft. When creating or configuring the ODBC data source name (DSN) using the Microsoft SQL Server ODBC driver, the network library protocol may unexpectedly switch to TCP/IP, even if the DSN is configured to use named pipes. This problem was discovered by Randall C. Kennedy's InfoWorld reporter, who identified that the change was actually made in MDAC 2.6 but never documented. Found when testing the client/server database workload on a Windows XP computer; InfoWorld claims that although overall server CPU usage increases by only 8 percent using TCP/IP, the context switch per second is down more than 150 percent (which is of course impossible because you will then have a negative context switch rate - drop is 33% or 60% depending on which planet the author is at the time of writing) for the workload of 10 users. They are not impressed that the fundamental functional changes to Net-Lib's default behavior occur without more than mentioning passes in unrelated documents. Windows XP users also sometimes have trouble connecting to SQL Server because SQL Server tries to use the certificate it finds on the local computer, but if there is more than one certificate available, it does not know which one to use. When trying to use Microsoft Analysis Services 2000 RTM, errors will sometimes show up when trying to browse the cube. Microsoft also encountered problems in Windows 95, Windows 98, and the Windows Me setup program that prevented the MDAC installation program from recovering when it encountered an installation error.
Some security issues are resolved by Microsoft for MDAC 2.7. David Litchfield of Next Generation Security Software Ltd reported a security vulnerability that occurred because one of the ODBC functions in MDAC used to connect to a data source contained an unchecked buffer. Another improved vulnerability is one where the attacker can respond to SQL Server discovery messages broadcast by the client with specially-created packages that can cause buffer overflow. Other defects are found where the code can be executed remotely when an attacker responds to a broadcast with a specially created package.
MDAC 2.8
MDAC 2.8 was released in August 2003 and distributed with Microsoft Windows Server 2003, as well as on the Microsoft Data Access Technology website. It does not introduce new features for the product but keeps a number of bugs and security issues - the reg file (automates changes to the registry) has been deleted which keeps the server running in an "unsafe" mode where RDS can be used to gain unauthorized access to the system and restrictions new worn on the length of the Shape query string. There are also some changes to the ODBC Administrator.
On May 23, 2005, Brad Rhodes (Leadership Manager of Microsoft Data Access Technology) announced that MDAC 2.8 SP1 is a redistributable MDAC that can be redistributed by Microsoft. MDAC is now an official component of the Microsoft operating system, although they will provide ongoing bug fixes and security for previously distributed versions of the released version. However, Microsoft has created a new component called SQL Native Client (SQLNCLI), which is a stand-alone data access API that has combined OLE DB and ODBC libraries into one DLL. This is set up to be independent of MDAC, which now relies on the country where the operating system resides - developers are now connected to this library and avoiding situations in which an operating system update that updates MDAC breaks up applications built to different versions of MDAC.
Windows 7 SP1 has violated the compatibility of MDAC 2.8. Software that is compiled on Windows 7 SP1 that is dependent on MDAC ADO will not work on Windows versions prior to Windows 7 SP1 (including Windows 7 RTM, Vista, XP). Microsoft has provided a solution to solve this problem for some applications but the VBA application remains unaffected. The fix for this issue has been released in February 2012.
Windows DAC 6.0
Windows Vista will no longer use MDAC, but it uses Windows DAC, which consists of the latest versions of the ADO, OLE DB, and ODBC components. According to Microsoft, "Windows DAC includes some changes to work with Windows Vista, but it's almost functionally similar to MDAC 2.8."
Versioning
There are two ways to check which version of MDAC is installed on the computer. For Windows 2000, Windows XP and Windows Server 2003, one way to check is through the Microsoft Components Examiner program, which compares the value of each MDAC DLL that is installed to an MDAC file manifest. The second way is to check the HKEY_LOCAL_MACHINE \ Software \ Microsoft \ DataAccess \ FullInstallVer
key in the Windows registry. Microsoft noted that this information may be incorrect for the MDAC version before 2.1 when compared to the version of the MDAC file that was installed to the system
References
Further reading
External links
- Microsoft MDAC Center
- MDAC Download
- MDAC Roadmap
Source of the article : Wikipedia