Microsoft Data Access Components
This article has an unclear citation style. (August 2013) |
Windows platform | |
Developer(s) | Microsoft |
---|---|
Final release | 2.8 SP1 (2.81.1117.6)
/ May 2005 |
Type | Database |
License | Freeware |
Website | msdn2 |
Microsoft Data Access Components (MDAC; also known as Windows DAC) is a
The first version of MDAC was released in August 1996. At that time Microsoft stated MDAC was more a concept than a stand-alone program and had no widespread distribution method. Later Microsoft released upgrades to MDAC as web-based redistributable packages. Eventually, later versions were integrated with Microsoft Windows and Internet Explorer, and in MDAC 2.8 SP1 they ceased offering MDAC as a redistributable package.
Throughout its history, MDAC has been the subject of several
Architecture
The latest version of MDAC (2.8) consists of several interacting components, all of which are
Microsoft SQL Server Network Library
The Microsoft SQL Server Network Library (also known as Net-Lib) is used by the Microsoft SQL Server to read and write data using many different
Each Net-Lib supported network protocol has a separate driver (not to be confused with a
The Super Socket Net-Lib deals with inter-computer communications and coordinates the secondary Net-Libs – though the TCP/IP secondary Net-Lib is an exception in that it calls on the
The Shared Memory Net-Lib, on the other hand, manages connections between multiple instances of SQL Server that exist on one computer. It uses a
Net-Lib is also able to support the impersonation of a logged in user's security context for protocols that support authenticated connections (called trusted connections). This allows Net-Lib to provide an integrated logon authentication mechanism via the use of
OLE DB
OLE DB (also called OLEDB or OLE-DB) allows MDAC applications access to different types of data stores in a uniform manner. Microsoft has used this technology to separate the application from data can store in the website the data store that it needs to access. This was done because different applications need access to different types and sources of data, and do not necessarily need to know how to access technology-specific functionality. The technology is conceptually divided into consumers and providers. The consumers are the applications that need access to the data, and the provider is the software component that exposes an 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 such simple data stores as a text file or
The Microsoft OLE DB Provider for SQL Server (SQLOLEDB) is the OLE DB provider that Microsoft provides for the Microsoft SQL Server from version 6.5 upwards.
Universal data link
Universal data link files (or '.udl files') provide a common user interface for specifying connection attributes. A user can use a Data Link Properties dialog box to save connection information in a .udl file as an alternative to directly specifying them by hand in a connection string. Consequently, these files provide a convenient level of indirection. Additionally, the dialog box specifies a number of alternate OLE DB data providers for a variety of target applications.[2]
ODBC
ADO
The collections are:
- Fields: This collection contains a set of Field objects. The collection can be used in either a Recordset object or in a Record object. In a Recordset object, each of the Field objects that make up the Fields collection corresponds to a column in that Recordset object. In a Record object, a Field can be an absolute or relative URL that points into a tree-structured namespace (used for semi-structured data providers like the Microsoft OLE DB Provider for Internet Publishing) or as a reference to the default Stream object associated with that Record object.[5]
- Properties: An object can have more than one Property object, which are contained in the object's Properties collection.[6]
- Parameters: A Command object can have several Parameter commands to change its predefined behaviour, and each of the Parameter objects are contained in the Command object's Parameters collection[7]
- Errors: All provider created errors are passed to a collection of Error objects, while the Errors collection itself is contained in a Connection object. When an ADO operation creates an error, the collection is cleared and a new group of Error objects are created in the collection.[8]
The objects are:
- Connection: The connection object is ADO's connection to a data store via OLE DB. The connection object stores information about the session and provides methods of connecting to the data store. As some data stores have different methods of establishing a connection, some methods may not be supported in the connection object for particular OLE DB providers. A connection object connects to the data store using its 'Open' method with a connection string which specifies the connection as a list of key value pairs (for example: "
Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';
").[9] The start of which must identify the type of data store connection that the connection object requires. This must be either: - Command: After the connection object establishes a session to the data source, instructions are sent to the data provider via the command object. The command object can send SQL queries directly to the provider through the use of the CommandText property, send a parameterised query or stored procedure through the use of a Parameter object or Parameters collection or run a query and return the results to a dataset object via the Execute method. There are several other methods that can be used in the Command object relating to other objects, such as the Stream, RecordSet or Connection objects.[11]
- Recordset: A recordset is a group of records, and can either come from a base table or as the result of a query to the table. The RecordSet object contains a Fields collection and a Properties collection.[12] The Fields collection is a set of Field objects, which are the corresponding columns in the table. The Properties collection is a set of Property objects, which defines a particular functionality of an OLE DB provider. The RecordSet has numerous methods and properties for examining the data that exists within it.[13] Records can be updated in the recordset by changing the values in the record and then calling on the
Update
orUpdateBatch
method. Adding new records is performed through theAddNew
function and then by calling on theUpdate
orUpdateBatch
method.[14] Records are also deleted in the recordset with the Delete method and then by calling on the Update method. However, if for some reason the deletion cannot occur, such as because of violations in referential integrity, then the recordset will remain in edit mode after the call to theUpdate
method. The programmer must explicitly call on theCancelUpdate
function to cancel the update. Additionally, ADO can roll back transactions (if this is supported) and cancel batch updates.[15] Recordsets can also be updated in one of three ways: via an immediate update, via a batch update,[16] or through the use of transactions:- Immediate: The recordset is locked using the
adLockOptimistic
oradLockPessimistic
lock. The data are updated at the data source after the record is changed and theUpdate
method is called. - Batch: The recordset is locked using
adLockBatchOptimistic
and each timeUpdate
is called the data are updated in a temporary buffer. Finally, whenUpdateBatch
is called the data are completely updated back at the data source. This has the advantage of it all being done in memory, and if a problem occurs thenUpdateCancel
is called and the updates are not sent to the data source - Transaction: If the OLE DB provider allows it, transactions can be used. To start the transaction, the programmer invokes the
BeginTrans
method and does the required updates. When they are all done, the programmer invokes theCommitTrans
method.RollbackTrans
can be invoked to cancel any changes made inside the transaction and roll back the database to the state before the transaction began[17]
- Immediate: The recordset is locked using the
- Record: This object represents one record in the database, and contains a fields collection. A RecordSet consists of a collection of Record objects.[18]
- Stream: A stream, mainly used in a RecordSet object, is a means of reading and writing a stream of bytes.[19] It is mostly used to save a recordset in an XML format,[20] to send commands to an OLE DB provider as an alternative to the CommandText object and to contain the contents of a binary or text file.
- Parameter: A parameter is a means of altering the behaviour of a common piece of functionality, for instance a stored procedure might have different parameters passed to it depending on what needs to be done; these are called parameterised commands.[21]
- Field: Each Record object contains many fields, and a RecordSet object has a corresponding Field object also. The RecordSet object's Field object corresponds to a column in the database table that it references.[22]
- Property: This object is specific to the OLE DB provider and defines an ability that the provider has implemented. A property object can be either a built-in property – it is a well defined property implemented by ADO already and thus cannot be altered – or a dynamic property – defined by the underlying data provider and can be changed[23]
- Error: When an OLE DB provider error occurs during the use of ADO, an Error object will be created in the Errors collection.[24] Other errors do not go into an Error object, however. For instance, any errors that occur when manipulating data in a RecordSet or Field object are stored in a Status property.[25]
ADO.NET
Deprecated and obsolete components
MDAC is a continually evolving component framework. As such, there have been several components that were previously part of it but have since been deprecated or removed entirely from the framework.
Jet Database Engine and JRO
Jet stands for Joint Engine Technology and was a
There were three modules to Jet. One was the Native Jet ISAM Driver, a Jet
Similarly, the Microsoft Jet OLE DB Provider and Replication Objects (JRO) which allowed replication between Jet data sources was removed from MDAC 2.6[27]
MSDASQL and Oracle ODBC
The Microsoft OLE DB Provider for ODBC, or MSDASQL
, was an OLE DB provider for allowing ActiveX Data Objects access to databases via any ODBC driver. Microsoft supplied several OLE-DB providers (for the Indexing Service, Active Directory, Jet, SQL Server, Oracle (MSDAORA
[28])
and Internet Publishing), however unless otherwise directed, ADO defaulted to using MSDASQL as the default provider. After MDAC 2.5 both the Oracle ODBC driver and MSDASQL supported Oracle 7 and partially supported Oracle 8i. Features that were not supported were:
- Oracle datatypes
- Unicode support for Oracle 7.x and 8i
- multiple client instances of Oracle
- nested outer joins
Microsoft initially deprecated the MSDASQL component for their 64-bit operating systems[29]
and the Microsoft Oracle ODBC driver was later superseded by a .NET Managed Oracle Provider, which supported Oracle 9i.
Remote Data Services (RDS)
Remote Data Services (RDS) allowed the retrieval of a set of data from the server, which the client then altered in some way and then sent back to the server for further processing.[31] With the popular adoption of Transact-SQL, which extends SQL with such programming constructs as loops and conditional statements, this became less necessary and it was eventually deprecated in MDAC 2.7. Microsoft produced SOAP Toolkit 2.0, which allows clients to do this via an open XML-based standard.[32]
SQLXML
SQLXML was designed for SQL Server 2000, but was deprecated with MDAC 2.6. It allowed Microsoft's relational database to be viewed by XPath and allowed data to viewable as an XML file. It has not actually been deprecated but has been removed from later versions of MDAC, though Microsoft does provide it as a downloadable component and will support it on their 64-bit operating systems.
Obsolete components
Several components have been completely removed from MDAC by Microsoft and are no longer supported. They are:
- ESQL/C: Embedded SQL (also known as E-SQL or ESQL/C) is a way of using SQL when programming in Visual C. Microsoft dropped support for this after SQL Server 6.5 was released, though they did license some of the ESQL/C run-time environment to a company called Micro Focus, who develops COBOL compilers and tools[33]
- DAO: DAO, or ODBC data sources.[34]
- RDO: Remote Data Objects, or RDO, was a Microsoft technology that allowed for the creation of interfaces that directly called on ODBC. RDO version 2.0 was the final version developed by Microsoft.
- DB-Library: a C-based API that allowed an application to interact with SQL Server. It will not be supported on any product after SQL Server 2000, and no features were added after SQL Server 6.5.
History
Microsoft has released several versions of MDAC over time. The distribution method has varied and the feature-set is different for each version.
MDAC 1.0
MDAC 1.0 was first released in August 1996.
MDAC 1.5
MDAC 1.5 was released between September 1997 and March 1998, and involved a more centralised distribution mechanism than MDAC 1.0. It was released with Microsoft Internet Explorer 4.0, the Internet Client SDK 4.0 and through a CD-ROM given out at the 1997 Professional Developers Conference (PDC). There were five versions of MDAC 1.5:
- MDAC 1.5 (initial release): included with Internet Explorer 4.0 and the Internet Client SDK.
- MDAC 1.5a: downloadable from Microsoft's website
- MDAC 1.5b: came with Windows NT 4.0 Option Pack & Office 97
- MDAC 1.5c: fixed issues with ADO threading and ODBC Connection Pooling and was distributed via the Microsoft website. It only came with the ADO/MDAC runtime components.
- MDAC 1.5d: came included with Windows 98 and Internet Explorer 4.01 service pack 1.[37]
The different versions of MDAC 1.5 consisted of:
- ODBC 3.5
- OLE DB 1.5
- ADO 1.5
- Remote Data Service 1.5, which superseded the Advanced Data Connector.[36]
This version of MDAC had a security flaw that made it vulnerable to an
MDAC 1.5 was the last data access component release supported under Windows NT 3.51 SP5.
MDAC 2.0
MDAC 2.0 was distributed with the Data Access 2.0 SDK and included the contents of MDAC 1.5, the ODBC 3.5 SDK and the OLE DB 1.5 SDK, and the OLE DB for
MDAC 2.1
MDAC 2.1 was distributed with
- ADO 2.1
- RDS 2.1
- OLE DB 2.1
- the OLE DB Provider for ODBC, SQL Server and Oracle
- JRO 2.1
- a Jet driver
- RDO.[41]
This version had security vulnerabilities whereby an unchecked buffer could allow an elevated privileges attack. This was found some time later and it affected MDAC 2.1, 2.5 and 2.6 and was addressed in a later patch[42]
MDAC 2.5
MDAC 2.5 was released on February 17, 2000 and distributed with Windows 2000, and the MDAC service packs were released in parallel with the Windows 2000 service packs. They were also distributed through Microsoft's website. Three service packs were released. The components included with 2.5 were:
- 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.[43]
Several issues were found in this version of MDAC. When using OLE DB Session Pooling, Microsoft COM+ would try to continuously load and unload OLE DB, and a conflict could arise that caused the OLE DB Session Pooling to run at 100% CPU usage. This was later fixed.[44] Microsoft published a full list of bugs fixed in MDAC 2.5 Service Pack 2 and MDAC 2.5 Service Pack 3. A security vulnerability also existed (later fixed) whereby an unchecked buffer was found in the SQL Server Driver. This flaw was introduced in MDAC 2.5 SP2.
MDAC 2.6
MDAC 2.6 was released in September 2000 and was distributed through the web and with Microsoft SQL Server 2000[45] MDAC 2.6 RTM, SP1 (released June 20, 2001), and SP2 (released June 11, 2002) were distributed in parallel with the Microsoft SQL Server 2000 service packs, and could also be downloaded from the Microsoft website.
Beginning with this version of MDAC, Microsoft Jet, Microsoft Jet OLE DB Provider, and the ODBC Desktop Database Drivers were not included. Instead, these could be installed manually.
MDAC 2.7
MDAC 2.7 was released in October 2001 through Microsoft's website. A refresh release was issued in April 2002 through the release of Windows XP and through Microsoft's website. Version 2.7 was available in
The main feature change was support for Microsoft's
Several security issues were resolved by Microsoft for MDAC 2.7. David Litchfield of Next Generation Security Software Ltd reported a security vulnerability that results because one of the ODBC functions in MDAC that is used to connect to data sources contained an unchecked buffer.[55] Another vulnerability that was fixed was one whereby an attacker could respond to an SQL Server discovery message broadcast by clients with a specially crafted packet that could cause a buffer overflow.[56] Another flaw was found whereby code could be executed remotely when the attacker responded to the broadcast with another specially crafted packet.[57]
MDAC 2.8
MDAC 2.8 was released in August 2003 and distributed with Microsoft Windows Server 2003, as well as on Microsoft's Data Access Technologies website. It did not introduce any new features to the product but fixed a number of bugs and security issues – a reg file (automates changes to the registry) was removed that made the server run in an "unsafe" mode whereby the RDS could be exploited to gain unauthorized access to the system[58] and a new restriction was imposed on the length of the Shape query string.[59] There were also several ODBC Administrator changes.[60]
On May 23, 2005 Brad Rhodes (Lead Program Manager of Microsoft Data Access Technologies) announced that MDAC 2.8 SP1 was the last stand-alone redistributable of MDAC that Microsoft will ship. MDAC is now an official component of the Microsoft's operating system, though they will be providing ongoing bug and security fixes to previously released versions of the web-distributable version.[61] However, Microsoft have created a new component called the SQL Native Client (SQLNCLI), which is a stand-alone data access API that has combined the OLE DB and ODBC libraries into one DLL. It was formed to be independent of MDAC, which is now reliant on the state the operating system is in – a developer now links to this library and avoids situations where an update of the operating system which updates MDAC breaks applications built to a different version of MDAC.[62]
Windows 7 SP1 has broken forward compatibility of MDAC 2.8. Software compiled on Windows 7 SP1 that relies on MDAC ADO will not work on Windows versions prior to Windows 7 SP1 (including Windows 7 RTM, Vista, XP).[63] Microsoft has provided solutions to work around this issue for some applications but VBA applications remain affected.[64] The fix for this issue has been release in February 2012.[65]
Windows DAC 6.0
Windows Vista will no longer use MDAC, but instead use Windows DAC, which consists of updated versions of ADO, OLE DB, and ODBC components. According to Microsoft, "Windows DAC includes some changes to work with Windows Vista, but is almost entirely functionally equivalent to MDAC 2.8."[66]
Version checking
There are two ways of checking the version of MDAC that is installed on a computer. For Windows 2000, Windows XP and Windows Server 2003, one way to check is via Microsoft's Component Checker program, which compares the value of each installed MDAC DLL to the MDAC file manifest. The second way is to check the key HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVer
in the
Version | Release date | Included with | Features | Security issues |
---|---|---|---|---|
1.0 | August 1996 |
|
|
No bulletins released |
1.5 |
September 1997 – March 1998 |
|
|
|
1.5a | September 1997–March 1998 |
Service release | ||
1.5b | September 1997–March 1998 |
|
Service release | |
1.5c | September 1997–March 1998 |
| ||
2.0 | July 1, 1998 |
|
|
|
2.0SP1 | July 1, 1998 |
|
Y2K remediation for Windows NT 4.0 | |
2.0SP2 | July 1, 1998 |
|
Y2K remediation for all platforms | |
2.1 | July 11, 1998 |
|
|
|
2.1 SP1 | March 15, 1999 |
| ||
2.1 SP1a (GA) | April 1, 1999 |
| ||
2.1 SP2 | July 1999 | |||
2.5 | February 17, 2000 |
|
|
|
2.5 SP1 | July 31, 2000 |
| ||
2.5 SP2 | April 2000 |
| ||
2.5 SPS3 | December 2003 |
| ||
2.6 | September 2000 |
|
Not included (manually installed):
|
|
2.6 SP1 | May 2001 |
| ||
2.6 SP2 | May 2002 |
| ||
2.7 | October 2001 |
|
|
|
2.8 | August 2003 |
|
Fixed bugs and security issues |
|
2.8 SP1 | May 2005 |
|
Fixed bugs |
|
2.8 SP2 | March 2005 |
|
||
9.0 | Never released |
|
||
Windows DAC 6.0 (a variant of MDAC for use with Vista) | November 2006 |
|
References
- ^ Kalen Delaney, "Inside Microsoft SQL Server 2000", Microsoft Press, pp. 70–74.
- ^ MSDN, "Creating a udl file", "ADO 2.8 API Reference", accessed April 28, 2007.
- ^ ibid.
- Microsoft Corporation, accessed March 1, 2018.
- ^ MSDN, "Fields Collection", "ADO 2.8 API Reference", accessed September 19, 2005.
- ^ MSDN, "Properties Collection", "ADO 2.8 API Reference", accessed September 19, 2005.
- ^ MSDN, "Parameters Collection", "ADO 2.8 API Reference", accessed September 19, 2005.
- ^ MSDN, "Errors Collection", "ADO 2.8 API Reference", accessed September 19, 2005.
- ^ MSDN, "Using a connection object", "ADO 2.8 Programmers Guide", accessed September 10, 2005.
- ^ MSDN, "ADO Connection String", "ADO 2.8 Programmers Guide", accessed September 10, 2005.
- ^ MSDN, "Command Object Overview", "ADO 2.8 Programmers Guide", accessed September 10, 2005
- ^ MSDN, "Examining Data", "ADO 2.8 Programmers Guide", accessed September 10, 2005.
- ^ A full list of ADO methods and properties that allow the examination of data in a recordset can be found in Microsoft's API documentation
- ^ MSDN, "Editing data", "ADO 2.8 Programmers Guide", accessed September 10, 2005.
- ^ MSDN, "Deleting records using the Delete method", "ADO 2.8 Programmers Guide", accessed September 10, 2005.
- ^ MSDN, "Updating and Persisting Data", "ADO 2.8 Programmers Guide", accessed September 12, 2005.
- ^ MSDN, "Transaction Processing", "ADO 2.8 Programmers Guide", accessed September 12, 2005.
- ^ MSDN, "Record Object", "ADO 2.8 API Reference", accessed September 12, 2005.
- ^ MSDN, "Records and Streams", "ADO 2.8 Programmers Guide", accessed September 12, 2005.
- ^ MSDN, "Streams and Persistence", "ADO 2.8 Programmers Guide", accessed September 12, 2005.
- ^ MSDN, "Parameter Object", "ADO 2.8 API Reference", accessed September 12, 2005.
- ^ MSDN, "Field Object", "ADO 2.8 API Reference", accessed September 12, 2005.
- ^ MSDN, "Property Object" "ADO 2.8 Programmers Guide", accessed September 13, 2005.
- ^ MSDN, "Error Handling", "ADO 2.8 Programmers Guide", accessed September 18, 2005.
- ^ MSDN, "Field-Related Error Information", "ADO 2.8 Programmers Guide", accessed September 18, 2005; & MSDN, "Recordset-Related Error Information", "ADO 2.8 Programmers Guide", accessed September 18, 2005.
- ^ Doug Rothaus & Mike Pizzo, "ADO.NET for the ADO Programmer", MSDN, accessed September 22, 2005.
- ^ Microsoft, Deprecated Components (OLE DB), retrieved August 5, 2005.
- ^
Hamilton, Bill (2008). ADO.NET 3.5 Cookbook. Cookbook Series (2 ed.). O'Reilly Media, Inc. p. 27. ISBN 9780596101404. Retrieved 2012-10-09.
[...] use the [...] Oracle OLE DB provider (MSDAORA) to access Oracle data.
- ^ Microsoft, "Data Access Technologies Road Map", Deprecated MDAC Components, Microsoft "ADO Programmer's Guide" Appendix A: Providers, Microsoft OLE DB Provider for ODBC Archived 2001-10-05 at the Wayback Machine, retrieved July 30, 2005.
- ^ Microsoft, MS KB article 244661: INFO: Limitations of Microsoft Oracle ODBC Driver and OLEDB Provider, last reviewed August 25, 2004, retrieved August 4, 2005.
- ^ Microsoft, "Remote Data Service (RDS)", retrieved August 11, 2005.
- ^ Microsoft, "Data Access Technologies Roadmap", "Deprecated MDAC Components"
- ^ Kalen Delaney, "Inside Microsoft SQL Server 2000", Microsoft Press, p65.
- ^ Christine Solomon, "Microsoft Office 97 Developer's Handbook", Microsoft Press. pp. 195–200.
- ^ (in German) Christian Koller, "ADO und MDAC Versionen" : MDAC 1.0 and 1.1 (OLE DB 1.0 and OLE DB 1.1) accessed July 1, 2005.
- ^ a b c d INFO: What are MDAC, DA SDK, ODBC, OLE DB, ADO, RDS, and ADO/MD?, Microsoft, March 14, 2005, retrieved 2005-07-01
- ^ a b Koller, Christian, "ADO und MDAC Versionen", MDAC 1.5 (in German), retrieved 2005-07-01
- ^ Microsoft, Microsoft Security Program: Frequently Asked Questions: Microsoft Security Bulletin (MS99-025), accessed July 6, 2005.
- CVE-1999-1011.
- ^ Christian Koller, "ADO und MDAC Versionen" : MDAC 2.0, accessed July 1, 2005.
- ^ (in German) Christian Koller, "ADO und MDAC Versionen" : MDAC 2.1, accessed July 1, 2005.
- ^ Microsoft, "Data Access Components: Security Hotfix for Q329414"; Microsoft Security Bulletin MS02-06 – originally Microsoft KB article Q329414) – (originally posted November 20, 2002), accessed July 6, 2005.
- ^ (in German) Christian Koller, "ADO und MDAC Versionen" : MDAC 2.5, accessed July 1, 2005.
- ^ Microsoft, MS KB article 320700, "OLE DB Session Pooling Causes 100 Percent CPU Usage (MDAC 2.5)", accessed July 6, 2005.
- ^ Microsoft, MS KB article 842272 Release manifest for MDAC 2.6 (2.60.6526.3), accessed July 6, 2005.
- ^ Microsoft, MS KB article 271908 MDAC version 2.6 and later do not contain Jet or Desktop ODBC drivers, accessed July 6, 2005.
- ^ Microsoft, MS KB article 820754 MDAC 2.6 or later should not be installed on SQL Server 7.0 clusters, accessed July 6, 2005.
- ^ Veritas, Document ID: 258144 VERITAS Backup Exec (tm) 9.0 for Windows Servers should not be installed on a Microsoft SQL Server 7.0 Cluster. Archived 2013-01-05 at archive.today
- ^ "Release manifest for MDAC 2.7 Refresh (2.70.9001.0)". Support.microsoft.com. Retrieved 2019-04-10.
- ^ Microsoft, MS KB article 289573 PRB: Configuring DSNs with SQL Server Net-Libraries.
- ^ Kennedy, Randall C. (21 November 2001). "It's not a bug, it's a feature". InfoWorld. IDG. Archived from the original on 10 March 2007.
- ^ Microsoft, MS KB article 309398 SQL Server 2000 installation or local connections fail with "SSL Security error:ConnectionOpen (SECDoClientHandshake())" error message.
- ^ Microsoft, MS KB article 297232 FIX: Cannot Browse Cubes or Process Mining Model After You Install Analysis Services 2000 RTM.
- ^ Microsoft, MS KB article 311720 PRB: MDAC Rollback May Fail on Windows 95, Windows 98, and Windows Millennium Edition.
- ^ Microsoft, Microsoft Security Bulletin MS02-040 Unchecked Buffer in MDAC Function Could Enable System Compromise (Q326573).
- ^ Microsoft, Microsoft Security Bulletin MS03-033 Unchecked Buffer in MDAC Function Could Enable System Compromise (823718)
- ^ Microsoft, Microsoft Security Bulletin MS04-003 Buffer Overrun in MDAC Function Could Allow Code Execution (832483)
- ^ Microsoft. MS KB article 818490: INFO: Handunsf.reg File Has Been Removed in MDAC 2.8 Redist Setup for Security Reasons
- ^ Microsoft. MS KB article 838405: FIX: "Argument passed to data shaping service was invalid" error after you apply MDAC 2.8
- ^ Microsoft. MS KB article 818489, INFO: ODBC Administrator Changes in MDAC 2.8.
- ^ Brad Rhodes (blog entry), The end of the MDAC Redistributable, May 23, 2005, retrieved August 11, 2005; & Microsoft, MS KB article 892854: "Release strategy for Microsoft Data Access Components", last updated January 24, 2005, retrieved August 11, 2005.
- ^ Acey J. Bunch (April 26, 2005), "Introducing SQL Native Client", MSDN blog entry.
- ^ MSDN, "Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1", "Forum", accessed March 9, 2011.
- ^ KB 2517589, "An ADO application that is re-compiled on a Windows 7 Service Pack 1-based computer does not run on down-level operating systems", "", accessed March 17, 2011.
- ^ KB 2640696, "An ADO-based application that is compiled in Windows 7 SP1 or in Windows Server 2008 R2 SP1 does not run in earlier versions of Windows", "", accessed April 20, 2012.
- ^ Microsoft, "FAQ About Windows DAC/MDAC". Accessed 12th December, 2006.
- ^ Microsoft. MS KB article 301202, How to check for MDAC version, last updated January 18, 2005, retrieved September 29, 2005.
- ^ Chapter 11 Changes, supplementary material to "A First Look at SQL Server 2005 for Developers" by Bob Beauchemin, Niels Berglund, and Dan Sullivan. Archived March 24, 2006, at the Wayback Machine
Further reading
- "ADO API Reference". MSDN. Microsoft. Retrieved 3 May 2014.
- "ADO Programmer's Guide". MSDN. Microsoft. Retrieved 3 May 2014.
- Delaney, Kalen (2000). Inside Microsoft SQL Server 2000 (3 ed.). ISBN 9780735609983.
- Rothaus, Doug; Mike, Pizzo (December 2001). "ADO.NET for the ADO Programmer". MSDN. Microsoft. Retrieved 3 May 2014.
- Shirolkar, Prash; Henry, Alyssa; Pepitone, Stephen; Bunch, Acey J.; Schwartz, David (January 2013). "Data Access Technologies Road Map". MSDN. Microsoft. Retrieved 3 May 2014.
- Solomon, Christine (1997). Microsoft Office 97 Developer's Handbook. ISBN 9781572316065.