Installing and configuring the MS Access Endpoint on Windows
.accdb or .mdb database filesThe MS Access Endpoint ships as a single MSAccess-Endpoint-0.3.0-setup.exe file — a self-contained 64-bit Windows installer built with Inno Setup. Administrator privileges are required.
The installer wizard walks through several configuration screens:
| Step | What You Configure |
|---|---|
| Install directory | Where to install the server. Default: C:\Program Files\JetEndpoint |
| Network | Port (default 9432), max connections (255), idle timeout (300 seconds), bind address (0.0.0.0) |
| Diagnostics | Logging level: none (warnings only), normal (connections + queries), or verbose (full detail). Log retention in days (7 default). |
| MSys Tables | Whether to show or hide (default) MS Access system tables (MSys*) in client queries and schema introspection. |
| Authentication | Mode: accept_all (any credentials) or simple (username + password). In simple mode, you enter the credentials during install. |
| Windows Service | Optionally install as a Windows Service (auto-start on boot). You can also choose to start it immediately after install. |
jet-server.exe and supporting files to the install directory.jet-endpoint.toml from your wizard choices and places it in %PROGRAMDATA%\JetEndpoint\. If a config already exists, it is never overwritten — upgrades preserve your settings.logs\ and schema_cache\ under %PROGRAMDATA%\JetEndpoint\.JETEndpoint Windows Service with auto-start and automatic restart on failure.jet-endpoint.toml config and cache.
All server behaviour is controlled by a single file: jet-endpoint.toml, located in %PROGRAMDATA%\JetEndpoint\ (typically C:\ProgramData\JetEndpoint\). You can edit it with any text editor.
| Section | Key | Description | Default |
|---|---|---|---|
[network] | port | TCP port the server listens on | 9432 |
max_connections | Maximum simultaneous client connections | 255 | |
idle_timeout_seconds | Close idle connections after this many seconds | 300 | |
bind_address | IP address to bind (0.0.0.0 = all interfaces, 127.0.0.1 = localhost only) | 0.0.0.0 | |
[auth] | mode | "accept_all" (any credentials) or "simple" (username/password) | accept_all |
users | For simple mode: list of ["username", "password"] pairs | [] | |
[debug] | diagnostics | "none", "normal", or "verbose" | none |
log_dir | Custom log directory (default: %PROGRAMDATA%\JetEndpoint\logs) | — | |
log_retention_days | Days to keep rotated logs (0 = unlimited) | 7 | |
log_max_file_size_mb | Max MB before daily rotation (0 = no limit) | 10 | |
log_msg_max_len | Max characters of SQL to include in log messages | 200 | |
[msys] | visibility | "hide" (default) or "show" — controls whether MS Access system tables (MSys*) are visible to clients | hide |
[tls] | enabled | Enable TLS encryption (self-signed ECDSA P-256) | true |
cert_file / key_file | Custom certificate and key paths (generated automatically if absent) | — |
[network] port = 9432 max_connections = 255 idle_timeout_seconds = 300 bind_address = "0.0.0.0" [auth] mode = "simple" users = [["admin", "my-secure-password"]] [debug] diagnostics = "normal" log_retention_days = 14 log_msg_max_len = 500[msys] visibility = "hide"
If you selected "Install as Windows Service" during setup, the endpoint runs automatically on boot and restarts on failure. Manage it through services.msc or PowerShell:
sc query JETEndpoint sc stop JETEndpoint sc start JETEndpoint
The service logs to the Windows Event Log as source "JETEndpoint" and also writes jet-server.log to the log directory.
Run the server directly from a command prompt. Useful for seeing live output during initial setup:
"C:\Program Files\JetEndpoint\jet-server.exe"
Press Ctrl+C to stop. Log output appears in the console window. Console mode reads the same jet-endpoint.toml from %PROGRAMDATA%\JetEndpoint\.
Logs are written to %PROGRAMDATA%\JetEndpoint\logs\jet-server.log by default. The file is rotated daily or when it exceeds log_max_file_size_mb (default 10 MB). Rotated logs are named jet-server.YYYY-MM-DD.log.
What gets logged depends on the diagnostics setting:
| Level | What You See |
|---|---|
none | Warnings and errors only — startup, shutdown, connection failures |
normal | Above + every connection event (startup, auth result, TLS status), cache lifecycle, and query text |
verbose | Above + function resolution details, schema lookup internals, SQL normalisation traces |
Console mode — port 9432, max 255 connections, idle timeout 300s JET endpoint listening on 0.0.0.0:9432 Max connections: 255
Once the server is running, connect any PostgreSQL-compatible client to the host and port. The "database name" is the full Windows path to your .accdb file:
psql -h localhost -p 9432 -U admin -d "C:/Users/Public/Documents/test.accdb"
From Python:
import pymsaccess
conn = pymsaccess.connect(host="localhost", port=9432, user="admin",
dbname="C:/data/mydb.accdb")
cur = conn.cursor()
cur.execute("SELECT * FROM [bi_date]")
for row in cur:
print(row)
From DBeaver, LibreOffice Base, or any JDBC tool — use the standard PostgreSQL JDBC driver with jdbc:postgresql://host:9432/. DBeaver works with both preferQueryMode=simple and preferQueryMode=extended (recommended for full metadata support).
| Problem | Likely Cause | Solution |
|---|---|---|
| "DAO.DBEngine.120 not resolved" | ACE not installed | Install Microsoft Access Database Engine |
| "Could not find file" | Wrong path or file permissions | Check the .accdb path in your connection string |
| Connection refused | Server not running or wrong port | Check the service is started; verify firewall allows port 9432 |
| Config not loaded | Config not found by server | Ensure jet-endpoint.toml is in %PROGRAMDATA%\JetEndpoint\ |
| 256th connection rejected | Connection limit (255) reached | Expected — Jet lock-file ceiling. Wait for idle connections to close. |
| SSL / TLS errors | Client requires TLS but server has it disabled | Set tls.enabled = true in config, or use sslmode=disable in client |
| Service won't start | ACE missing or config error | Check Windows Event Log → Application for "JETEndpoint" entries |