---
locale: "en"
updated_at: "2026-04-16T08:39:00.587Z"
canonical: "https://www.isdecisions.com/en/userlock/docs/guides/database/migrata-access-to-sql-server"
---

# Migrate UserLock data from Access to SQL Server

Transfer data to new production database.

## Introduction

UserLock ships with a default **MS Access database**, which is not designed for production use.

If you already have production data stored in Access and need to keep it, you can migrate it to SQL Server (including SQL Express).

This guide explains how to transfer UserLock data using the SQL Server Import and Export Wizard.

> **Note**
>
> - If you need to install a SQL Express instance first, see [Install and configure SQL Express](/userlock/docs/guides/database/install-and-configure-sql-express).
> - The migration **only transfers the data**. To make UserLock actually use the new SQL database, follow the guide [Define a production database](/userlock/docs/guides/database/define-a-production-database).
> - For background information about UserLock’s database model, see [Database architecture](/userlock/docs/reference/core-concepts/database-architecture).
> - Procedure validated with SQL server 2019.

## Steps

1. **Launch the Import Wizard**
  - From the **Start menu**, search for *Import and Export Data (32-bit)*.
  - Alternatively, run: `C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTSWizard.exe`
  - Click **Next**.
  ![](https://a.storyblok.com/f/122374/629x465/f29c949634/2-sql-server-import-export-wizard.png)
2. **Select the data source**
  - In **Data source**, select **Microsoft Access**.
  - In **File name**, enter the path to the Access DB (default): `C:\ProgramData\ISDecisions\UserLock\Database\UserLock.mdb`
  - Click **Next**.
  ![](https://a.storyblok.com/f/122374/625x379/d2bfc02000/3-choose-data-source.png)
3. **Select the destination**
  - Choose **SQL Server Native Client**.
  - Enter your `server name\instance`.
  - Select **SQL Server Authentication** with an account that has **owner permissions** (e.g. `sa`).
  - In **Database**, choose your empty `UserLock` SQL database.
  - Click **Next**.
  ![](https://a.storyblok.com/f/122374/624x440/2bc2924d44/4-sql-server-native-client.png)
4. **Choose the transfer type**
  - Select **Copy data from one or more tables or views**.
  - Click **Next**.
  ![](https://a.storyblok.com/f/122374/597x341/c204908315/5-copy-data-from-tables.png)
5. **Map the tables**
  - In the **Select Source Tables and Views** window, check the table `UserLogonEvents`.
    - Click **Edit Mappings…**.
    - In the **Column mappings** window, set the **ID column** to **Ignore**, then click **OK**.
  - Repeat the same action for the tables `UserStatus` and `AdminActionResults`.
  - ⚠ For the table `AdminActions`, **do not change the ID**.
  - Once the three mappings are done, select all the required tables and click **Next**.
  ![](https://a.storyblok.com/f/122374/509x342/77c478ccc9/6-select-source-tables.png)
  
  ![](https://a.storyblok.com/f/122374/541x493/705f8d4dc6/7-clumn-mappings.png)
6. **Run the import**
  - Click **Finish**.
  - Once the process completes, click **Close**.
  ![](https://a.storyblok.com/f/122374/464x477/491a8476f5/9-complete-wizard.png)
  
  ![](https://a.storyblok.com/f/122374/629x537/4b4949759a/10-execution-successful.png)

## Best practices

- **Verify the transfer**: compare row counts between Access and SQL.
- **Back up your SQL database** after migration.
- **Archive the Access file** to avoid confusion and ensure UserLock only uses the new database.
