Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Recall the halcyon days of youth when alphabet soup was your fun meal. Keep these happy thoughts in the back of your mind as we take a few tastes of the database version of alphabet soup. The following sections spell out the basics of getting to a database with connection strings and using a database programming interface in your Access VBA code.

Components of data access

In this Article

Using ODBC driver or OLE DB provider

Programmatically interface to SQL Server from Access

Summary of ODBC driver versions

Summary of OLE DB provider versions

ODBC keyword summary

OLE DB keyword summary

Using ODBC driver or OLE DB provider

Connection strings have been around a long time. You can define a formatted connection string either in the Access user interface or in VBA code. A connection string (whether ODBC or OLE DB) passes information directly to the database, such as server location, database name, type of security, and other useful options. For example:

ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;

At first, there was SQL Server Native Client (SNAC) a stand-alone library that contained ODBC and OLEDB technologies and is still available for SQL Server versions 2005 through 2012. Many legacy applications used SNAC and it is still supported for backward compatibility, but we don't recommend using it for new application development. You should use later individual, downloadable versions of the ODBC drivers.

ODBC drivers

Open Database Connectivity (ODBC) is a protocol that you use to connect an Access database to an external data source such as Microsoft SQL Server. Typically, you use file data sources (also called DSN files) to add a connection string, in which case, the FILEDSN keyword is used on the connection string, or stored in the registry, in which case, the DSN keyword is used. Alternatively, you can use VBA to set these properties using a "DSN-less" connection string.

Over the years, ODBC drivers have shipped in three phases:

  • Prior to 2005, ODBC drivers shipped with Windows Data Access Components (WDAC), which originally was called Microsoft Data Access Components (MDAC). These components still ship with Windows for backward compatibility. For more information, see Microsoft or Windows Data Access Components.

  • ODBC drivers shipped with SNAC for SQL Server 2005 through SQL Server 2012.

  • After SQL Server 2012, ODBC Drivers have shipped individually and contain support for new SQL Server features.

For new development, avoid using ODBC drivers from the first two phases, and use ODBC drivers from the third phase.

OLE DB providers

Object Linking and Embedding, Database (OLE DB) is a more recent protocol that you use to connect an Access database to an external data source such as Microsoft SQL Server. OLE DB does not require a DSN and also provides full access to ODBC data sources and ODBC drivers.

Tip    Typically, you use the Data Link Properties dialog box to add an OLE DB connection string. Although there is no way from Access to open the Data Link Properties dialog box, in Windows Explorer, you can create an empty .txt file, change the file type to .udl, and then double-click the file. After you create a connection string, change the file type back to .txt.

Over the years, OLE DB providers have shipped in three phases:

  • Prior to 2005, OLE DB providers shipped with Windows Data Access Components (WDAC), which originally was called Microsoft Data Access Components (MDAC).

  • OLE DB providers shipped with SQL Server 2005 through SQL Server 2017. It was deprecated in 2011.

  • In 2017, the SQL Server OLE DB provider was un-deprecated.

The currently recommended version for new solution development is OLE DB Driver 18 for SQL Server.

How to optimize performance with an ODBC connection string

To optimize performance, minimize network traffic, and reduce multi-user access to the SQL Server database, use as few connection strings as possible by sharing connection strings over multiple record sets. Although Ace simply passes on a connection string to the server, it does understand and use the following keywords: DSN, DATABASE, UID, PWD, and DRIVER to help minimize client/server communication.

Note    If an ODBC connection to an external data source is lost, Access automatically tries to reconnect to it. If the retry is successful, you can continue working. If the retry fails, you can still work with objects that don’t rely on the connection. To reconnect, close and re-open Access.

Recommendations when using both ODBC and OLE DB

Avoid mixing connection string and database access technologies. Use an ODBC connection string for DAO. Use an OLE DB connection string for ADO. If your application contains VBA code that uses both DAO and ADO, then use the ODBC driver for DAO and the OLE DB provider for ADO. Strive to get the latest feature and supports for both ODBC and OLEDB respectively.

ODBC uses the term driver and OLE DB uses the term provider. The terms describe the same type of software component but are not interchangeable in connection string syntax. Use the correct value as documented.

Top of Page

Programmatically interface to SQL Server from Access

There are two main ways to programmatically interface to an SQL Server database from Access.

DAO

A data access object (DAO) provides an abstract interface to a database. Microsoft Data Access Objects (DAO) is the native programming object model that lets you get at the heart of Access and SQL Server to create, delete, modify, and list objects, tables, fields, indexes, relations, queries, properties, and external databases.

For more information, see Microsoft Data Access Objects reference.

ADO

ActiveX Data Objects (ADO) provides a high-level programming model and is available in Access by a reference to a third party library. ADO is straightforward to learn and enables client applications to access and manipulate data from a variety of sources, including Access and SQL Server. Its primary benefits are ease of use, high speed, low memory overhead, and a small disk footprint. ADO also supports key features for building and Web-based applications.

For more information, see Microsoft ActiveX Data Objects reference and Microsoft ActiveX Data Objects (ADO).

Which one should you use?

In an Access solution that uses VBA code, you can use DAO, ADO or both as your database interface technology. DAO continues to be the default in Access. For example, all forms and reports and Access queries use DAO. But when you migrate to SQL Server, consider using ADO to make your solution more efficient. Here are general guidelines to help you decide when to use DAO or ADO.

Use DAO when you want to:

  • Create a read/write, bound form without using VBA.

  • Query local tables.

  • Download data into temporary tables.

  • Use pass-through queries as data sources for reports or forms in read-only mode.

  • Define and use a TableDef or Querydef object in VBA.

Use ADO when you want to:

  • Leverage extra ways to optimize, such as performing asynchronous operations.

  • Run DDL and DML pass-through queries.

  • Get to SQL Server data directly through recordsets in VBA.

  • Write simpler code for certain tasks, such as streaming of Blobs.

  • Call a stored procedure directly, with parameters, using a command object in VBA.

Top of Page

Summary of ODBC driver versions

The following table summarize important information about ODBC driver versions, download locations, and feature support. Make sure you use the correct bit version (64-bit or 32-bit) of the driver based on Windows and not Office. If you are running 32-bit Access on 64-bit Windows, install 64-bit drivers, which includes the 32-bit components needed for Access.

For more information, see Using Connection String Keywords with SQL Server Native Client, Release Notes for ODBC to SQL Server on Windows (V17), and Features of the Microsoft ODBC Driver for SQL Server on Windows (V13, 11).

ODBC Drivers

Version

Download

New features

ODBC Drivers 17.0 to 17.3

SQL Server 2017

Download

ODBC Driver 17.3

Using Azure Active Directory with the ODBC Driver

Limitations of the ODBC driver when using Always Encrypted

Using XA Transactions

ODBC Driver 17.2

Using Always Encrypted with the ODBC Driver for SQL Server

Data Classification

UTF-8 server encoding Collation and Unicode Support

ODBC Driver 17.1

Using Always Encrypted with the ODBC Driver for SQL Server

ODBC Driver 17.0

Always Encrypted

UseFMTONLY    To use legacy metadata in special cases requiring temp tables. See Release Notes for ODBC to SQL Server on Windows

Differences when using Managed Instance (ODBC version 17)

ODBC Driver 13.1

SQL Server 2016 SP1, SQL Azure

Download

Always Encrypted

Azure Active Directory

AlwaysOn Availability Groups

Driver Aware Connection Pooling in the ODBC Driver for SQL Server

ODBC Driver 13.0

SQL Server 2016

Download

Internationalized Domain Name (IDN)

ODBC Driver 11.0

SQL Server 2005 to 2012

Download

Driver-Aware Connection Pooling

Connection Resiliency in the Windows ODBC Driver

Asynchronous Execution

Service Principal Names (SPNs) in Client Connections (ODBC)

Features of the Microsoft ODBC Driver for SQL Server on Windows

Top of Page

Summary of OLE DB provider versions

The following table summarize important information about OLE DB providers versions, download locations, and feature support. Make sure you use the correct bit version (64-bit or 32-bit) of the driver based on Windows and not Office. If you are running 32-bit Access on 64-bit Windows, install 64-bit drivers, which includes the 32-bit components needed for Access.

For more information, see Using Connection String Keywords with SQL Server Native Client.

OLE DB Provider

Version

Download

New features

OLE DB Driver 18.2.1

(MSOLEDBSQL)

SQL Server 2017

Download

See OLE DB Driver for SQL Server Feature and Release notes for the Microsoft OLE DB Driver, for SQL Server

SQL Server Native Client (SQLNCLI)

SQL Server 2005 to 2012

Deprecated, do not use

OLE DB Driver (SQLOLEDB)

Deprecated, do not use

Top of Page

ODBC keyword summary

The following table summarizes the ODBC keywords recognized by SQL Server and their purpose. Only a subset are recognized by Access.

Keyword

Description

Addr

The network address of the server running an instance of SQL Server.

AnsiNPW

Specifies usage of ANSI-defined behaviors for handling NULL comparisons, character data padding, warnings, and NULL concatenation (Yes or No).

APP

Name of the application calling SQLDriverConnect.

ApplicationIntent

Declares the application workload type when connecting to a server (ReadOnly or ReadWrite).

AttachDBFileName

Name of the primary file of an attachable database.

AutoTranslate

Specifies whether ANSI character strings are sent between the client or server or translated to Unicode (Yes or No).

Database

The database name. Description The purpose of the connection. Driver Name of the driver as returned by SQLDrivers.

DSN

Name of an existing ODBC user or system data source. Encrypt Specifies whether data should be encrypted before sending it over the network (Yes or No).

Failover_Partner

Name of the failover partner server to be used if a connection cannot be made to the primary server.

FailoverPartnerSPN

The SPN for the failover partner.

Fallback

Deprecated keyword.

FileDSN

Name of an existing ODBC file data source. Language The SQL Server language.

MARS_Connection

Specifies multiple active result sets (MARS) on the connection for SQL Server 2005 (9.x) or later (Yes or No).

MultiSubnetFailover

Specifies whether to connect to the availability group listener of a SQL Server availability group or a Failover Cluster Instance (Yes or No).

Net

dbnmpntw indicates named pipes and dbmssocn indicates TCP/IP.

PWD

The SQL Server login password.

QueryLog_On

Specifies the logging of long-running queries (Yes or No).

QueryLogFile

Full path and file name of a file to use to log data on long-running queries.

QueryLogTime

Digit character string specifying the threshold (in milliseconds) for logging long-running queries.

QuotedId

Specifies whether SQL Server uses the ISO rules regarding the use of quotation marks in SQL statements (Yes or No).

Regional

Specifies whether the SQL Server Native Client ODBC driver uses client settings when converting currency, date, or time data to character data (Yes or No).

SaveFile

Name of an ODBC data source file into which the attributes of the current connection are saved if the connection is successful.

Server

The name of a SQL Server instance: Server on the network, an IP address, or Configuration Manager alias.

ServerSPN

The SPN for the server.

StatsLog_On

Enables the capture of SQL Server Native Client ODBC driver performance data.

StatsLogFile

Full path and file name of a file used to record SQL Server Native Client ODBC driver performance statistics.

Trusted_Connection

Specifies whether Windows Authentication Mode or SQL Server username or password is used for login validation (Yes or No).

TrustServerCertificate

When used with Encrypt, enables encryption using a self-signed server certificate.

UID

The SQL Server login name.

UseProcForPrepare

Deprecated keyword.

WSID

The workstation identifier, the network name of the computer on which the application resides.

Top of Page

OLE DB keyword summary

The following table summarizes OLE DB keywords recognized by SQL Server and their purpose. Only a subset are recognized by Access.

Keyword

Description

Addr

The network address of the server running an instance of SQL Server.

APP

The string identifying the application.

ApplicationIntent

Declares the application workload type when connecting to a server (ReadOnly or ReadWrite).

AttachDBFileName

Name of the primary file of an attachable database.

AutoTranslate

Configures OEM/ANSI character translation (True or False).

Connect Timeout

The amount of time (in seconds) to wait for data source initialization to complete.

Current Language

The SQL Server language name.

Data Source

The name of an instance of SQL Server in the organization.

Database

The database name.

DataTypeCompatibility

A number indicating the mode of data type handling that will be used.

Encrypt

Specifies whether data should be encrypted before sending it over the network (Yes or No).

FailoverPartner

The name of the failover server used for database mirroring.

FailoverPartnerSPN

The SPN for the failover partner.

Initial Catalog

The database name.

Initial File Name

The name of the primary file (include the full path name) of an attachable database.

Integrated Security

Used for Windows Authentication (SSPI).

Language

The SQL Server language.

MarsConn

Specifies multiple active result sets (MARS) on the connection for SQL Server 2005 (9.x) or later (Yes or No).

Net

The network library used to establish a connection to an instance of SQL Server in the organization.

Network Address

The network address of an instance of SQL Server in the organization.

PacketSize

Network packet size. The default is 4096.

Persist Security Info

Specifies whether persist security is enabled (True or False).

PersistSensitive

Specifies whether persist sensitive is enabled (True or False).

Provider

For SQL Server Native Client, this should be SQLNCLI11.

PWD

The SQL Server login password.

Server

The name of a SQL Server instance: Server on the network, an IP address, or Configuration Manager alias.

ServerSPN

The SPN for the server.

Timeout

The amount of time (in seconds) to wait for data source initialization to complete.

Trusted_Connection

Specifies whether Windows Authentication Mode or SQL Server username or password is used for login validation (Yes or No).

TrustServerCertificate

Specifies whether a server certificate is validated (True or False).

UID

The SQL Server login name.

Use Encryption for Data

Specifies whether data should be encrypted before sending it over the network (True or False).

UseProcForPrepare

Deprecated keyword.

WSID

The workstation identifier, the network name of the computer on which the application resides.

Top of Page

Administer ODBC data sources

Manage linked tables

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.