Microsoft Access to the Cloud: Approaches for Local Databases
Five practical approaches to moving Microsoft Access databases to the cloud — from an Azure SQL backend to full replacement. Trade-offs, costs, and how to choose the right path.
Five practical approaches to moving Microsoft Access databases to the cloud — from an Azure SQL backend to full replacement. Trade-offs, costs, and how to choose the right path.
Microsoft Access has been quietly running Australian businesses for thirty years. It is genuinely capable software: it can hold a relational database, run forms and reports, and automate workflows through VBA macros — all without a server, without IT, and without a software development budget. For small teams that needed a custom database in the 1990s or 2000s, it was often the only realistic option.
The problem is the same one that catches every locally-hosted database eventually: the world moved to the cloud, and Access did not. It lives in a file on a shared drive or a local machine. Remote workers can't get to it reliably. Mobile devices can't use it at all. Modern SaaS platforms have no way to connect to it. And as the file grows and multiple users write to it simultaneously, corruption and performance problems compound.
Most businesses with an Access database reach a point where the question isn't whether to move, but how.
There are five main approaches, ranging from a quick architectural change that keeps Access in place to a complete rebuild. The right choice depends on how complex the database is, how business-critical the workflows are, and how much disruption the team can absorb.
Access databases tend to surface as a problem when one of several things happens:
Access corruption on a network share is often the final trigger. Once the database corrupts and users lose hours of work, the conversation moves from "we should probably do something about this" to "we need to fix this now."
Five paths exist from local Access to cloud-accessible. They range from a quick backend swap to a full rebuild:
Access has always supported a split architecture: the forms, reports, and queries live in a "frontend" .accdb file on each user's machine, while the data tables live in a separate "backend" file. That backend file doesn't have to be another Access file — Access can link tables to SQL Server or Azure SQL via ODBC.
The migration steps are: export the Access tables to Azure SQL, set up ODBC connections on each user's machine, relink the tables in Access to point at Azure SQL instead of the local backend file. The forms, reports, queries, and VBA macros continue to work as before.
This approach makes sense when the primary pain is corruption, data loss risk, or the 2 GB limit — not the Access platform itself. If users are happy with how the application works and just need the data to be more reliable and scalable, this is the quickest win. It also works well as a first step toward a longer migration: stabilise the data, then tackle the frontend at a separate stage.
Microsoft's official recommended path for migrating Access to the cloud is SharePoint Lists as the data store and Power Apps as the interface. If your organisation already uses Microsoft 365, both are included in most plans at no extra cost.
SharePoint Lists store data in a structure similar to Access tables. Power Apps provides a form-building environment that can create screens resembling Access forms. Power Automate replaces basic VBA macros for workflow automation.
SharePoint + Power Apps works well for relatively simple Access databases: a few tables, straightforward data entry forms, basic workflows triggered by record creation or status changes. If the Access database has many complex queries, intricate relationships, or substantial VBA logic, this path will frustrate you.
Microsoft's migration assistant tool will move your Access tables to SharePoint Lists, but it doesn't migrate forms, queries, reports, or macros. The data transfer is automated; the application rebuild is not.
Dataverse (formerly Common Data Service) is Microsoft's cloud database built to underpin Power Apps at enterprise scale. Unlike SharePoint Lists, Dataverse is a proper relational database with enforced relationships, server-side business rules, role-based security, and no arbitrary row limits. Power Apps Canvas apps or Model-driven apps sit on top of it, Power Automate handles workflow automation, and Power BI provides reporting.
Power Platform + Dataverse suits organisations already invested in the Microsoft ecosystem, with moderate-complexity Access databases, and an appetite to build and maintain in the Power Platform toolchain. It is a genuine step up from SharePoint Lists for anything with real relational data requirements. For very complex Access applications with substantial custom business logic, it may still not be sufficient.
The strangler fig pattern applied to Access: rather than replacing the entire system at once, a new web application is built alongside it and modules migrate across one at a time. Access continues running throughout and is only retired when it has nothing left to do.
Rebuild the Access application from scratch as a web application. Start from the data model, rewrite the business logic, build the interface fresh. Access is retired when the new system goes live.
If you're doing a full replacement, plan for a parallel running period where both systems operate simultaneously. It forces the new system to be validated against real data before Access is retired, and gives users time to find gaps before the old system disappears.
| Factor | Azure SQL Backend | SharePoint + Power Apps | Power Platform + Dataverse | Progressive Extraction | Full Replacement |
|---|---|---|---|---|---|
| Typical timeline | Weeks | Months | Months | 12–24 months | 6–18 months |
| Risk level | Very low | Low–medium | Medium | Low (incremental) | High |
| Access still required | Yes | No | No | During transition | No |
| Browser and mobile access | No | Yes | Yes | Yes (migrated modules) | Yes |
| Handles complex relational data | Yes (SQL) | Poorly | Yes | Yes (SQL backend) | Yes |
| VBA logic preserved | Yes | No — must rewrite | No — must rewrite | Gradually replaced | No — must rewrite |
| Microsoft 365 dependency | No | Yes | Yes | No | No |
| SaaS integrations | Difficult | Power Automate connectors | Power Automate connectors | Yes (new platform) | Yes |
The most practical sequence for complex databases: start with the Azure SQL backend swap to immediately resolve corruption and size issues, then build the new web application against that same SQL database using progressive extraction. You get stability quickly, and the full modernisation happens incrementally rather than as a single high-risk project.
Access data types don't map cleanly to SQL Server or Azure SQL. The migration requires deliberate decisions about each field:
VBA is the hardest part of any Access migration. Access macros and VBA modules embed business logic — validation rules, calculations, workflow triggers, data transformations — that is not visible in the data model and cannot be automatically migrated to any other platform. Cataloguing this logic before migration starts is essential and usually takes longer than expected.
Common VBA patterns and their equivalents in a new system:
Saved Access queries often contain business logic in the form of calculated fields, complex joins, and parameter prompts. Most Access SQL translates to T-SQL with minor adjustments, but Access-specific functions (like Format(), IIf(), and Nz()) need equivalent replacements in the target database or application layer.
Long-lived Access databases accumulate data quality problems. Fields used for multiple purposes depending on context. Required fields with blank values because Access didn't enforce the constraint consistently. Duplicate records that manual processes created over the years. Budget time for data cleansing before migration — moving dirty data to a new system just relocates the problem.
Access reports are often underestimated in scope. They may include complex groupings, calculated totals, conditional formatting, and sub-reports. None of this migrates automatically to any replacement system. Inventory every report in the database and determine which ones are actively used before committing to rebuilding them — many reports in old Access databases haven't been run in years.
No, and Microsoft explicitly advises against it. Access databases stored in SharePoint document libraries or OneDrive can open in desktop Access, but simultaneous edits cause corruption because Access requires exclusive file-level locking that cloud file sync does not support. This will corrupt your database. The only safe shared-file approach is storing the backend on a traditional Windows file server, not a cloud sync folder.
Moving the backend to Azure SQL is primarily an infrastructure and configuration cost — often $3,000–$8,000 depending on the complexity of the table structure and how many linked tables need reconfiguring. A Power Apps replacement of a simple Access database might run $10,000–$30,000. A full custom web replacement of a complex multi-form, multi-report Access application can run $50,000–$200,000+. Progressive extraction spreads these costs over time and typically delivers a lower total cost than a single full rebuild.
Microsoft 365 plans include a limited version of Power Apps. Apps that only read and write data from Microsoft 365 sources (SharePoint, Teams, Excel Online) are included. Apps that connect to Dataverse or premium connectors (Xero, Salesforce, SQL Server) require Power Apps per-app or per-user plans, which are additional costs on top of Microsoft 365 licensing. Check exactly which connectors your replacement app will need before assuming it's covered.
In the short term: compact and repair the database, ensure all users are running the same version of Access, and split the database into frontend and backend if it isn't already split. Move the backend file to a dedicated file server rather than a NAS or consumer network storage device. These steps buy time. For a medium-term fix, moving the backend to Azure SQL (Option 1 above) resolves the corruption problem properly without requiring any application rebuilding work.
Start with a system audit. Open the VBA editor and work through every module and macro — document what each one does by reading the code and observing its effects in the running application. Interview every person who uses the database and document the workflows they depend on. This discovery process takes longer than businesses expect, but it is the only way to understand what you're migrating. Skipping it guarantees that critical functionality will be missed, and users will discover it after go-live.
Possibly. Access databases often exist because no off-the-shelf product covered the business's specific needs at the time it was built. That may have changed. Before committing to a custom rebuild, evaluate whether modern SaaS platforms now cover your core use case. Industry-specific software (job management, inventory, CRM, field service) has matured significantly. If a product covers 80% of what your Access database does and you can adapt processes for the rest, buying is almost always faster and cheaper than rebuilding.
Five approaches to moving local FileMaker apps to the cloud, with clear trade-offs for each.
Strategies for modernising legacy software without disrupting operations.
Migration strategies, data migration, and how to avoid the common failures.
Tell us what you're working on. We'll come back with a practical recommendation and clear next steps.