A lightweight web-based SQL Server management tool for developers who need quick database exploration, query execution, and script generation without the overhead of full-featured database management tools.
SQL Cmdr provides a single-page interface for:
- Browsing database objects (tables, views, stored procedures)
- Executing SQL queries with real-time feedback
- Generating CREATE, SELECT, and DROP scripts
- Exporting database metadata as JSON
- Azure Default Credential support for passwordless authentication
Perfect for:
- Quick database exploration during development
- Ad-hoc query execution
- Learning SQL Server schema structures
- Lightweight alternative to SSMS for simple tasks
- Running in Azure with managed identity authentication
Prerequisites:
- .NET 8 SDK
- Visual Studio 2022 or VS Code
- SQL Server (local or remote)
Press F5 to launch with .NET Aspire orchestration.
Image: jerrynixon/sql-commander
docker run -p 8080:8080 \
-e ConnectionStrings__db="Server=host.docker.internal;Database=master;User Id=sa;Password=Your_password123;TrustServerCertificate=true" \
jerrynixon/sql-commander:latestdocker run -p 8080:8080 \
-e ConnectionStrings__db="Server=myserver.database.windows.net;Database=mydb" \
jerrynixon/sql-commander:latestWhen no credentials are provided in the connection string, SQL Cmdr automatically uses Azure Default Credential for authentication, which supports:
- Managed Identity (System-assigned or User-assigned)
- Azure CLI (
az login) - Visual Studio / VS Code credentials
- Azure PowerShell
- Environment variables (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, etc.)
This is ideal for running in Azure Container Instances, Azure Container Apps, AKS, or any Azure service with managed identity support.
ConnectionStrings__db(required) SQL Server connection stringSQLCMDR_FILE_LOG(optional, set to1to enable file logging inside container)ASPNETCORE_URLS(defaulthttp://+:8080)
GET /healthreturns{ "status": "ok" }
- Settings stored in
sqlcmdr.settings.jsonin container working directory - Use a volume mount to persist settings across container restarts:
docker run -p 8080:8080 \ -v $(pwd)/data:/app \ -e ConnectionStrings__db="..." \ jerrynixon/sql-commander:latest
- The toolbar includes an Open in VS Code button that builds a
vscode://ms-mssql.mssql/connectlink from your current settings and launches the VS Code connection dialog. - Requires the MS SQL extension for VS Code.
- When no server name is configured SQL Cmdr falls back to the current browser host on port 1433.
SQL Cmdr supports two authentication modes (configurable via the settings modal):
Traditional username/password authentication:
- Server:
myserver.database.windows.net - Database:
mydb - User ID:
myuser - Password:
mypassword
Passwordless authentication using Azure identity:
- Server:
myserver.database.windows.net - Database:
mydb - No credentials required
The UI automatically detects and uses the appropriate authentication method. When running in Azure with managed identity, no password management is needed.
- ASP.NET Core 8 Razor Pages
- Microsoft.Data.SqlClient 5.2.2
- Azure.Identity 1.17.0 (for Azure Default Credential)
- Serilog (console by default, optional file sink)
- .NET Aspire (dev only)
sql-commander/
├── AppHost/ # Aspire orchestration (dev)
├── SqlCmdr.Web/ # Web UI
├── SqlCmdr.Library/ # Services + abstractions
├── SqlCmdr.Library.Tests # Tests
└── SqlServer/ # Database project
MIT License - See LICENSE