The most common first step away from a pure Access database is not abandoning Access entirely. It is keeping your Access forms, reports, and VBA code while moving the data to SQL Server. This is sometimes called “upsizing” and it is the least disruptive migration path available.

Here is how it works, what changes, and what to watch out for.

The Basic Architecture

In a pure Access database, everything lives in one file — tables, queries, forms, reports, macros, and VBA modules. In a split architecture, you separate these into two pieces:

The front-end connects to the back-end using ODBC (Open Database Connectivity) linked tables. From the user’s perspective, the forms look and work the same. Behind the scenes, every data operation goes through SQL Server instead of reading and writing to a shared file.

What Changes for Users

In a well-executed migration, users should notice very little change in how they interact with the database. Their forms look the same. Their reports run the same way. The buttons they click do the same things.

What they will notice:

How ODBC Linked Tables Work

The connection between your Access front-end and SQL Server back-end is built on ODBC linked tables. Here is how they work:

  1. You set up an ODBC data source (DSN) or use a DSN-less connection string that tells Access where to find the SQL Server instance, which database to use, and how to authenticate.
  2. In Access, you create linked tables that point to the SQL Server tables. These appear in your table list with a small globe icon instead of the usual table icon.
  3. When your forms or queries reference these tables, Access translates the request into an ODBC call to SQL Server. SQL Server processes the request and returns the results.

For simple operations — opening a form bound to a table, running a select query, inserting or updating records — this translation is seamless. Access sends the SQL command to SQL Server, gets the results back, and populates the form.

What You Need to Set Up

On the Server Side

On Each Workstation

What Breaks (And How to Fix It)

Moving to SQL Server is not a transparent drop-in replacement. Several things work differently, and your existing queries and VBA code may need adjustments.

Data Type Differences

Access and SQL Server use different data types. Most map cleanly, but a few cause problems:

Query Syntax

Access SQL and T-SQL (SQL Server’s dialect) are not identical. Common issues:

If your queries run entirely through the linked table interface (bound forms, simple SELECT queries), Access handles the translation automatically. But if you have pass-through queries or complex VBA code that builds SQL strings, you will need to rewrite those using T-SQL syntax.

VBA Code

Most VBA code that interacts with data through forms and bound controls continues to work without changes. The problems arise in code that:

Performance Gotchas

The biggest performance trap is Access pulling more data than necessary over ODBC. Common causes:

Is This the Right Approach for You?

The Access front-end with SQL Server back-end approach is the right choice when:

It is not the right choice when:

For many organizations, this split architecture buys years of reliable service while they plan a longer-term strategy. The data is safe in SQL Server, the users keep the interface they know, and the most painful Access problems go away immediately.