MDAC, SNAC and ADO.NET (Data Access Technologies)

I’ve been working with ADO.NET for sometime and so know a thing or two about it but what about MDAC, SNAC? How do they fit in and relate to each other (if at all)

Starting off with a few acronyms:
MDAC - Microsoft Data Access Components
SNAC - SQL Native Client
ADO - ActiveX Data Objects
ADO.NET - ADO for .NET Framework (but due to enhancements, can be considered an entirely different product rather than just an upgrade)
OLEDB - Object Linking and Embedding (OLE) DB (for database)
ODBC - Open DataBase Connectivity

The three are termed as “Data Access tehnologies” and thus includes a number of components (eg. providers) to access/connect to data (or services)

Here are some important points: [more]
1. ADO.NET
    - recommended for managed code development (working with .NET Framework)
    - comes with .NET Framework installation
    - System.Data namespace in .NET
        - “sub” namespace for specific data provider (eg. System.Data.SqlClient for MSSQL Server)
    - Overview of ADO.NET

2. MDAC
    - recommended if you are writing native code targetting Windows or if you need to write a classic ASP, Visual Basic 6.0x COM, or C++ application
    - latest version is MDAC 2.8
    - comes with Windows XP Service Pack 2. Otherwise can be downloaded from here
    - to determine what version you have, use Component Checker, from the same link above
    - allows access to connection pooling, memory management, client cursor support
    - can be used to support access to SQL Server versions prior to 7.0
    - three interfaces for MDAC: ODBC, OLEDB, ADO
    - ODBC
        - involves the concept of Data Source Name (DSN) which identifies the correct driver to use for the access
            - to create a DSN, click Start > Control Panel > Administrative Tools > Data Sources (ODBC)
            - sample connection string “DSN=myDSN;Uid=myUID;Pwd=myPwd”
                - where myDSN is an existing (user or system) DSN name
                - for fileDSN an example is “FILEDSN=c:dataConn.dsn;Uid=myUid;Pwd=myPwd”
                - depending on the datasource you’re accessing, you might not need the Uid (user id) or Pwd (password)
        - typically used with C++ but if you have a compelling reason to use ODBC with VB.NET or C#.NET refer to these
            - http://support.microsoft.com/kb/310985
            - http://support.microsoft.com/kb/310988
    - OLEDB
        - considered the fastest and most consistent option when coding in C++
        - doesn’t require DSN
        - for more considerations and information, refer to “OLE DB Programmer’s Reference” at http://msdn2.microsoft.com/en-us/library/ms974412.aspx
    - ADO
        - used for scripting languages (eg. VBScript, ASP, JScript)
        - a DSN or a DSN-less connection can be used

3. SNAC
    - recommended if you need to access the latest features in SQL Server 2005 using ODBC or OLEDB
    - introduced in SQL 2005
    - used for COM based applications (otherwise use ADO.NET)
    - support for SQL 2005 features like database mirroring, Multiple Active Result Sets (MARS), query notifications, user defined types (UDT) and XML data types
    - stricter error handling than MDAC and reveals more information for errors
    - doesn’t allow access to connection pooling, memory management, client cursor support (unlike MDAC)
    - doesn’t implement ADO (although it does enable one to access functionality of ADO)
        - will demonstrate in a while
    - wraps OLEDB and ODBC into one DLL, thus enables it to perform quickly and can be secured easily
    - for SNAC usage, check this link : http://msdn2.microsoft.com/en-us/library/ms130822.aspx
        - or for updating applications to use SNAC from MDAC - http://msdn2.microsoft.com/en-us/library/ms130822.aspx
    - MSDN on SQL Native Client

Both SQL Native Client and MDAC support read committed transaction isolation using row versioning, but only SQL Native Client supports snapshot transaction isolation.

Ohh if I may add, Wikipedia has some good overview on these too.

Reference: MCITP 70-442 Self-Paced Traning Kit

Built with Hugo
Theme Stack designed by Jimmy