SQL Server Express vs Docker vs Developer Edition: Which Install Should You Use?
Before writing a single query, you need SQL Server actually running somewhere. Here’s how to pick without overthinking it — plus enough detail on each option that you’re not just following steps blindly, and know how to troubleshoot when something doesn’t come up cleanly.
Option A: SQL Server Developer Edition (Windows, full-featured, free)
- Download SQL Server 2022 Developer Edition from Microsoft’s site
- Run the installer, choose Basic installation type
- Note the instance name at the end — usually
localhostSQLEXPRESSor(local) - Install SSMS separately — recent SQL Server installers no longer bundle it
Developer Edition has every Enterprise Edition feature — In-Memory OLTP, Always Encrypted, columnstore indexes, the works — licensed for free non-production use. Genuinely the best choice if you’re on Windows and want zero feature limitations while learning, including features covered later in the Performance Tuning course that Express doesn’t support at all.
Option B: Docker (Mac, Linux, or Windows — fastest to reset)
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd"
-p 1433:1433 --name sql1 --hostname sql1
-v sql1data:/var/opt/mssql
-d mcr.microsoft.com/mssql/server:2022-latest
One command, running in under a minute. Breaking down what each flag does:
| Flag | What it does |
|---|---|
-e ACCEPT_EULA=Y |
Required — the container refuses to start without accepting Microsoft’s license terms |
-e MSSQL_SA_PASSWORD=... |
Sets the sa login’s password — must meet complexity rules (8+ chars, mixed case, a digit, a symbol) or the container silently fails to start |
-p 1433:1433 |
Maps container port 1433 to your machine’s port 1433, so SSMS on your host can reach it at localhost,1433 |
-v sql1data:/var/opt/mssql |
Persists your data in a named Docker volume — without this, deleting the container also deletes every database inside it |
Useful follow-up commands once it’s running:
docker ps # confirm the container is actually running
docker logs sql1 # see startup errors if the connection fails
docker exec -it sql1 bash # get a shell inside the container
docker rm -f sql1 # completely remove it (data survives if you used -v)
The real advantage of Docker: a clean-slate reset is one command, with no uninstall wizard and no leftover registry entries — genuinely useful if you want to practice an install/setup scenario repeatedly, or if you’re on macOS/Linux where the native installer isn’t an option.
Comparing Your Options
Express is genuinely fine for more than “just learning” — plenty of small production applications with modest data volumes run on it for free indefinitely, as long as you stay under the 10GB-per-database cap and 1GB RAM buffer pool limit. If you outgrow it, upgrading in place to Standard or Enterprise is a licensing change, not a data migration — your databases carry over untouched.
A Fourth Option: Native Linux Install
SQL Server also installs directly on Ubuntu, RHEL, and SUSE without Docker — useful if you’re deploying to a Linux server long-term and want to match production exactly, though Docker is faster for local experimentation since you’re not managing a package manager and systemd service directly.
The Client Tool: SSMS or Azure Data Studio
| Tool | Platform | Best for |
|---|---|---|
| SSMS (SQL Server Management Studio) | Windows only | The traditional, full-featured tool — richest GUI for administration tasks (backups, security, job scheduling) |
| Azure Data Studio | Windows, macOS, Linux | Lighter, cross-platform, closer to a VS Code-style editor experience — the natural choice if you’re on Mac/Linux or already comfortable with VS Code |
Either works fine — every query in this course runs identically in both. Pick based on your OS, not a perceived “better” choice.
Troubleshooting a Failed Install
docker logs sql1, which will show the exact rejection reason.localhost. Try the full instance name shown at the end of setup (often localhostSQLEXPRESS) — a named instance doesn’t respond on plain localhost alone.Enjoyed this?
Subscribe to get every new SQL Server lesson as soon as it’s published, and share it with a developer who’d find it useful.
📡 Subscribe via RSS |
Share on X |
Share on LinkedIn |
Share on Facebook
Want the full structured course with quizzes, projects, and 10+ exercises per chapter? Check out SQL Server Fundamentals, coming soon on this site.