Chapter 01 · SQL Server Platform Foundations, Editions, Licensing Awareness, and Lab Setup

SQL Server 2025 Platform Choices, Windows/Linux Support, Containers, and Tooling

Select supported SQL Server 2025 Windows/Linux/container platforms and current client tooling, with explicit persistence, supportability, sqlcmd-variant, and Azure Data Studio retirement awareness.

Intermediate90–115 minutesPlatform/tooling + optional container labSQL Server 2025 CU-serviced baselineSSMS 22 / VS Code MSSQL / sqlcmdLast reviewed: August 2026

Learning outcomes

ServiceHub now knows which edition it wants to test, but the same Database Engine can be operated on supported Windows Server/client Windows editions, supported Linux distributions, virtual machines, or Linux containers. Tool choices also changed after Azure Data Studio retirement. This lesson builds a platform matrix based on support boundaries rather than “it starts on my laptop.”

01

Compare supported Windows, Linux, virtual-machine, and container deployment models for SQL Server 2025.

02

Explain why a running binary or emulated container is not equivalent to a supported production platform.

03

Choose SSMS, VS Code with the MSSQL extension, and sqlcmd according to administration, development, and automation needs.

04

Distinguish sqlcmd (Go) from sqlcmd (ODBC) when commands or flags differ.

05

Run a disposable container lab with persistence and an explicit cleanup path.

Current tooling note

Azure Data Studio retired on February 28, 2026 and no longer receives updates or security fixes. Do not start new course labs around it. Use supported SSMS, VS Code with the MSSQL extension, and current sqlcmd tooling.

1. Supportability is part of architecture

A platform is not “supported” merely because setup completes. Microsoft publishes operating-system and Linux-distribution support matrices tied to SQL Server version. At the time of this lesson review, SQL Server 2025 supports current Windows Server families and selected client Windows editions for appropriate editions. On Linux, current 2025 release notes list Red Hat Enterprise Linux 9/10 and Ubuntu 22.04/24.04; SUSE Linux Enterprise Server is not a SQL Server 2025 target.

Production support is the intersection of SQL Server lifecycle, operating-system lifecycle, distribution version, CPU architecture, filesystem/storage guidance, and the exact cumulative update. A lab can intentionally be simpler, but it should record what it is actually running.

2. Containers package the process, not the durability problem

Microsoft’s SQL Server 2025 container images run SQL Server on Linux. Current documentation supports the container image on Linux hosts using Intel/AMD x86-64 processors; emulation/translation environments are not tested or supported. This distinction matters on ARM laptops: an image might be coerced into starting through emulation, but that is not evidence of a supported SQL Server container platform.

Containers are excellent for disposable labs because they make process/filesystem boundaries visible. But container deletion can delete database data stored only in the writable container layer. Durable labs mount a volume or bind path for /var/opt/mssql, and backups are copied to storage that survives container replacement.

Safety

The commands below are examples for a disposable training environment. Set a strong, local-only password in an environment variable. Never commit the password, shell history containing secrets, or production certificates to the repository.

3. Choose tools by job, not habit

Tool Best fit Platform / caution
SQL Server Management Studio (SSMS) Deep SQL Server administration, Agent, security, plans, XEvents, database tools Windows-focused. SSMS 22 is the current GA generation; keep it serviced.
Visual Studio Code + MSSQL extension Cross-platform query/development workflow, projects, source control Supported replacement path for many former Azure Data Studio workflows.
sqlcmd (Go) Cross-platform automation and modern subcommands Standalone Go-based implementation; flags/subcommands are not identical to every ODBC behavior.
sqlcmd (ODBC) Classic scripts and ODBC-aligned environments Available with command-line utilities / mssql-tools; identify variant/version before scripting.
Azure Data Studio Historical only Retired 2026-02-28; no updates/security fixes.
text · identify which sqlcmd you are invoking
sqlcmd --versionsqlcmd -?

The Go variant reports a Go-sqlcmd version with --version; the ODBC variant reports the classic Microsoft command-line tool version with -?. If a deployment script depends on a flag, record the variant/version in CI evidence.

4. Windows and Linux service management are different

On Windows, SQL Server Setup, SQL Server Configuration Manager, Windows services, registry-backed network configuration, Windows authentication, and Windows certificate stores shape many operational workflows. On Linux, packages, mssql-conf, systemctl, Linux filesystem permissions, OpenSSL/certificate paths, and distribution repositories are the natural control surface. The T-SQL engine remains recognizable, but the surrounding operating-system procedures are not interchangeable.

Do not write a course runbook that says “restart SQL Server” and supplies only systemctl or only a Windows GUI. State the platform, then provide the platform-native action. Where possible, verification should return to SQL/TDS evidence so the same acceptance criteria work across platforms.

5. Deliberately wrong container lab: ephemeral data

A learner launches a container without a volume, creates ServiceHubLab, then runs docker rm -f and recreates the container. The database is gone. SQL Server did not violate durability; the operator destroyed the filesystem layer that held the durable files.

bash · wrong: no persistent data mount
# Linux/macOS shell syntax — training example onlyexport SQLLAB_SA_PASSWORD='set-a-strong-local-training-password'docker run --name sql2025-ephemeral \  -e ACCEPT_EULA=Y \  -e MSSQL_SA_PASSWORD="$SQLLAB_SA_PASSWORD" \  -p 14333:1433 \  -d mcr.microsoft.com/mssql/server:2025-latest# Removing this container also removes data kept only in its writable layer.docker rm -f sql2025-ephemeral

The repair is to add a named volume and still keep a backup strategy. A volume protects against container replacement, not accidental DML, corrupted pages, malicious deletion, or host loss.

6. Hands-on lab: persistent SQL Server 2025 container

If your host meets the official container requirements, use the following path. Windows users running Linux containers can set the password in PowerShell and substitute the environment-variable syntax; do not copy Bash syntax blindly.

bash · create a named volume and SQL Server container
# Linux/macOS shell syntaxexport SQLLAB_SA_PASSWORD='set-a-strong-local-training-password'docker volume create servicehub-sql-datadocker run --name servicehub-sql2025 \  -e ACCEPT_EULA=Y \  -e MSSQL_SA_PASSWORD="$SQLLAB_SA_PASSWORD" \  -p 14333:1433 \  -v servicehub-sql-data:/var/opt/mssql \  -d mcr.microsoft.com/mssql/server:2025-latestdocker logs servicehub-sql2025
powershell · PowerShell environment variable form
$env:SQLLAB_SA_PASSWORD = 'set-a-strong-local-training-password'docker volume create servicehub-sql-datadocker run --name servicehub-sql2025 `  -e ACCEPT_EULA=Y `  -e MSSQL_SA_PASSWORD="$env:SQLLAB_SA_PASSWORD" `  -p 14333:1433 `  -v servicehub-sql-data:/var/opt/mssql `  -d mcr.microsoft.com/mssql/server:2025-latestdocker logs servicehub-sql2025

Connect with your supported client and run:

sql · verify the engine inside the container
SELECT    @@VERSION AS version_string,    SERVERPROPERTY('Edition') AS edition,    SERVERPROPERTY('ProductVersion') AS product_version,    SERVERPROPERTY('MachineName') AS machine_name;SELECT host_platform, host_distribution, host_releaseFROM sys.dm_os_host_info;

Persistence test: create a disposable database, stop and start the same container, and verify the database remains. Then remove/recreate the container while reusing the named volume and verify again. Do not delete the volume until you intentionally finish the lab.

bash · cleanup when the lab is finished
docker rm -f servicehub-sql2025# The next line irreversibly removes the lab data volume. Run only when finished.docker volume rm servicehub-sql-data

7. Production judgment

Containers do not eliminate patching, backup, capacity, certificate, identity, or observability work. Virtual machines do not automatically make SQL Server “cloud native.” Linux does not make Windows-specific operational instructions valid, and Windows does not make Linux path/permission assumptions valid. Choose the platform based on supportability, team operations, integration requirements, HA/DR design, storage characteristics, automation, and workload evidence.

For course reproducibility, every future lab should state at least: SQL Server build, edition, database compatibility level, host/container platform, client tool/driver, and any feature-specific prerequisite. That turns “works for me” into an environment description someone else can reproduce.

8. Summary and next step

SQL Server 2025 is cross-platform at the Database Engine level, but platform support and operational tooling are explicit constraints. SSMS remains the deep Windows administration tool; VS Code with MSSQL is the supported cross-platform development path; sqlcmd comes in Go and ODBC variants; Azure Data Studio is retired. Containers are disposable compute unless data is persisted and backed up. Lesson 4 uses these choices to install/configure an instance and verify connectivity, identity, transport, and encryption rather than stopping at “Setup succeeded.”

Check your understanding

  1. Why is a SQL Server container that runs successfully under CPU emulation not automatically a supported production platform?
  2. What is the difference between a named Docker volume and a SQL Server backup?
  3. Which supported tool should replace Azure Data Studio for cross-platform SQL development?
  4. Why should automation record whether it uses sqlcmd (Go) or sqlcmd (ODBC)?
  5. What evidence from T-SQL can help confirm the host platform of the connected SQL Server instance?
Review the answers

Microsoft support documentation defines supported host architectures. Current SQL Server Linux container guidance limits supported container hosts to Intel/AMD x86-64 and does not treat emulation as supported.

A volume preserves database files across container replacement on the same storage. A backup is a recoverable copy used for restore and protects different failure classes; you need both according to risk.

Visual Studio Code with the MSSQL extension is Microsoft’s supported migration path for many Azure Data Studio development workflows; SSMS remains important for full administration.

The implementations and some flags/subcommands differ. A script that assumes one variant can fail or behave differently under the other.

sys.dm_os_host_info reports host platform/distribution/release information; SERVERPROPERTY and @@VERSION provide complementary engine evidence.

Authoritative references

Keep knowledge open

Help the academy stay free and grow.

If these tutorials save you time, a small donation supports new lessons, technical review, diagrams, examples, and long-term maintenance.

ETHEthereum / ERC-20 only
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0

Send only Ethereum or ERC-20 compatible assets to this address.