What does this guide solve?
SQL Server is no longer Windows-only. Current releases also run on supported Linux distributions, but OS choice should follow Microsoft integration, DBA tooling, HA and support requirements.
Windows or Linux?
Windows is natural where Active Directory, SSMS/PowerShell and Microsoft operations are already standard.
SQL Server 2025 also runs on supported Linux platforms such as RHEL and Ubuntu. Microsoft documents XFS/ext4 as supported Linux filesystems; validate exact version support.
CPU and memory
Clock speed and NUMA matter for OLTP, while core count and memory bandwidth matter more for parallel and analytical workloads.
Set SQL Server memory limits so the OS retains sufficient memory, and include edition licensing/scale limits in capacity planning.
Storage
Data, log and tempdb have different I/O profiles. Low-latency NVMe/enterprise SSD can substantially help transaction-log and tempdb-heavy workloads.
Validate latency and write durability for RAID, SAN and cloud-disk designs.
Security
TDE, Always Encrypted, row-level security, auditing, role-based permissions and backup encryption can be used according to edition/version support.
Prefer enterprise identity integration, least privilege and network isolation over broadly exposed SQL authentication.
HA and backup
Always On Availability Groups and Failover Cluster Instance models can be evaluated according to availability requirements.
Full/differential/log backup chains, CHECKDB, restore testing and offsite/immutable copies belong in DR design.
Frequently Asked Questions
Is SQL Server on Linux suitable for production?
Yes, on supported RHEL/Ubuntu releases; validate the feature and platform matrix for the exact SQL Server version.
Does SQL Server require NVMe?
No, but NVMe can materially benefit transaction log, tempdb and high-IOPS workloads.
Is TDE identical across every edition?
No. Security feature support can vary by edition/version; check the official feature matrix before licensing.
Evaluate Your Database Infrastructure
We can review workload, security, hardware, HA and backup requirements together.
Architecture and operating model
SQL Server sizing combines buffer pool, plan cache, workers, tempdb and transaction-log behavior. Do not assume identical feature and integration support on Windows and Linux. Max server memory must leave room for the OS and other services.
- 1Application/driver
- 2Queries and memory
- 3Tempdb/log/data
- 4HA and restore
Design parameters
- Max memory and tempdb
- Reserve OS and other-service memory; monitor tempdb workload separately from data/log files.
- Platform and feature
- Verify supported Windows/Linux features and integrations by version.
- Workload and query mix
- Measure read/write ratio, connection count, transaction duration and expensive queries. Database size alone does not explain hardware needs.
- Memory and storage
- Examine working set, log writes, temporary space and checkpoint behavior separately. Reliable write guarantees matter alongside speed.
- Recovery chain
- Test recovery of the starting backup, required logs, configuration and keys together.
- Access and change
- Separate application, administrator and schema-change permissions. Control production index and parameter changes.
Worked example
Separate log-write latency from data-file reads in an OLTP pilot. Record tempdb growth and blocked transactions during reporting. Verify platform choice against application, drivers, HA and backup support; successful SQL connectivity alone is insufficient.
Example commands: replace lab values and confirm permissions and software versions before use.
SELECT name, recovery_model_desc FROM sys.databases;
Troubleshooting
| Observation | Likely cause / distinction | Verification |
|---|---|---|
| CPU is low but transactions wait | Log I/O, locks or tempdb contention may dominate. | Compare wait statistics with queries and I/O in the same interval. |
| CPU is low but queries are slow | Locks, I/O or client waits may dominate. | Inspect the execution plan and wait type for the same query. |
| Replica is connected but stale | Sending, replay or transaction waits can create lag. | Compare the last applied operation with source commit time. |
| Storage keeps growing | Log retention, open transactions, replication slots or maintenance may be involved. | Inspect supported product statistics; do not delete logs manually. |
Acceptance checks
- Verify support and restore paths for every used feature on the selected OS.
- Test representative transactions and queries using realistic data distributions.
- Restore to a separate target and validate application records.
- Reject unauthorized reads and schema changes using a controlled identity.
- Verify one authorized writer and the correct connection target after failover.
- Measure locks, log volume and latency during maintenance.
Related concepts
Transaction boundary
A transaction groups operations that an application treats as jointly successful or failed. Database atomicity does not automatically include email delivery or changes in other services. Define the commit point and retry behavior. Evaluate idempotency to prevent processing the same request twice. Test connection loss before and after commit separately: a client-side error does not always mean the transaction failed.
Transaction logs and recovery chains
WAL, redo and transaction-log mechanisms record changes in order for durability and recovery, with product-specific details. Data copies and logs must belong to compatible timelines and chains. Having log files alone does not prove point-in-time recovery: a valid base backup and the required uninterrupted log range are also needed. Measure archival lag, log volume and replay time. Do not delete logs arbitrarily to regain space; use supported retention and cleanup methods.
Indexes and execution plans
An index can reduce scanned data for suitable queries, but adds write, maintenance and storage costs. Evaluate column order, selectivity, filters and sorting together. Slow queries are not always caused by missing indexes: estimates, locks, storage latency or excessive data transfer may dominate. Inspect representative execution plans and actual row counts. Measure read improvement alongside write overhead, and avoid uncontrolled production maintenance.
Locks, waits and deadlocks
Concurrent operations use locks or versioning to preserve integrity. Long transactions can block others; a deadlock forms a cycle of mutual waits. The database may terminate one participant, requiring safe application retries. Examine blocked and blocking queries together. Arbitrarily reducing isolation can change consistency guarantees. Test shorter transactions, consistent access order and suitable indexes under the same workload.
Durability and power loss
Survival of committed data depends on write guarantees across the database, OS, filesystem, controller and disks. Do not disable safety settings for speed without understanding caches and flush behavior. Power-loss-protected storage helps but does not prove correctness of the entire chain. Run failure and recovery tests in a controlled lab, not production. Validate application records and supported consistency checks rather than merely opening a sample file.
Replication scope
Replication transfers data or state changes to another copy. Synchronous transfer can introduce latency and connectivity dependence; asynchronous transfer can lag behind. A current replica is not necessarily protected from incorrect changes: deletion and corruption can propagate too. Compare lag with the application’s last committed operation, not merely connection status. Define which copy receives write authority after the source is lost and how the old node is reconciled when it returns. Report replication lag and the actual recoverable point separately.