Installing and configuring SQL Server 2025 on Windows Server

A complete step-by-step guide: installing SQL Server 2025 on Windows Server, then configuring the server properties and the Configuration Manager.

This guide covers the whole process of installing SQL Server 2025 on Windows Server (2019 / 2022 / 2025), then the post-installation configuration through the Server Properties in SSMS and the SQL Server Configuration Manager.


Prerequisites

ComponentMinimumRecommended
Processorx64 — 1.4 GHz2.0 GHz or more, up to 64 cores per NUMA node
Memory (RAM)1 GB, 512 MB for Express≥ 4 GB, increasing with the size of the databases
Disk space6 GB minimum≥ 50 GB for a production environment, excluding data
DisplaySuper VGA 800 × 6001920 × 1080
NetworkBuilt-in network adapterInternet access for updates

Software requirements

ComponentRequired version
Operating systemWindows Server 2019 / 2022 / 2025, including Server Core
.NET Framework4.7.2, installed automatically if missing
PowerShell5.1 or later
Network protocolsTCP/IP, Named Pipes, Shared Memory, all built into the OS

Note: SQL Server 2025 installs on x64 processors only. 32-bit installations are no longer supported.

Storage good practice before installing

Separate your files physically to optimize I/O:

Drive letter (example)ContentRecommended RAID
C:\Operating systemRAID 1
D:\SQL Server binariesRAID 1
E:\Data files (.mdf / .ndf)RAID 10
F:\Transaction logs (.ldf)RAID 10
G:\TempDB, data and logRAID 10 / NVMe
H:\Backups (.bak)RAID 5 / RAID 6

Data files are accessed randomly, whereas transaction logs are accessed sequentially. Separating them reduces contention on the heads of mechanical disks and improves performance significantly.


Editions available in SQL Server 2025

SQL Server 2025 introduces one key new edition: Standard Developer.

EditionUseKey points
EnterpriseHigh-performance productionEvery feature, no RAM or CPU limit
StandardSME productionUp to 256 GB of RAM and 32 cores, improved over 2022
Enterprise DeveloperDev / test onlyIdentical to Enterprise, free outside production
Standard Developer (new)Dev / test onlyIdentical to Standard, free outside production — removes the feature gap between dev and production
ExpressSmall applicationsFree, limited to 1 GB of RAM and 10 GB per database
WebWeb hostingSpecial licence, through hosting providers
Evaluation180-day trialIdentical to Enterprise

Why Standard Developer matters: teams used to run the Developer edition, equivalent to Enterprise, in dev and test, then Standard in production. That produced behavioural differences — Batch Mode on Rowstore and Online Index Rebuild are absent from Standard, for instance. Standard Developer removes the problem by guaranteeing feature parity across every environment.


What is new in SQL Server 2025

Before starting the installation, here are the features that justify the upgrade:

  • the VECTOR data type and the VECTOR_DISTANCE function for semantic search (cosine, Euclidean, dot product);
  • DiskANN vector indexes (CREATE VECTOR INDEX) for large-scale ANN search, in preview;
  • native AI integration: Azure OpenAI, LangChain, Semantic Kernel, Entity Framework Core;
  • improved native JSON support, with JSON indexes;
  • Change Event Streaming and a built-in REST API;
  • improved optimized locking, to reduce contention;
  • extended Intelligent Query Processing;
  • Microsoft Fabric integration for hybrid analytics.

Downloading the installation media

  1. Go to the official page: https://www.microsoft.com/sql-server/sql-server-downloads
  2. Click Download under the edition you want: Evaluation, Developer or Express.
  3. The downloaded file is called SQL2025-SSEI-Eval.exe, or Dev / Expr depending on the edition — around 4.2 MB.
  4. Run that launcher and choose between three options:
OptionDescriptionWhen to use it
BasicQuick installation of the database engine with the default configurationA quick test environment
CustomLaunches the full wizard, with every option availableRecommended for production
Download MediaDownloads the full ISO or CAB, about 1.5 GBOffline installation, deployment to several servers
  1. Choose Download Media, select the ISO format and a destination folder.
  2. Once the download finishes, mount the ISO on the target server and run setup.exe.

Step-by-step installation with the wizard

Step 1 — SQL Server Installation Center

When you launch setup.exe, the SQL Server Installation Center appears. In the left-hand pane:

  • Planning: checks the prerequisites with the System Configuration Checker.
  • Installation: launches the various installation scenarios.

Click InstallationNew SQL Server stand-alone installation or add features to an existing installation.

Step 2 — Product key

FieldDescription
Specify a free editionSelect Evaluation, Developer or Express
Enter the product keyEnter the licence key for Standard or Enterprise

Tip: you can install in Evaluation mode, for 180 days, and convert to a licensed edition later with the product key, without reinstalling.

Click Next.

Step 3 — Licence terms

Read and accept the Microsoft licence terms. Tick I accept the license terms and Privacy Statement.

This page also links to the Microsoft privacy statement. In a corporate environment, check that it complies with your GDPR policy.

Click Next.

Step 4 — Microsoft Update

OptionRecommendation
Use Microsoft Update to check for updatesTick this box

This lets setup download the latest cumulative updates and apply them during installation. In production it is good practice, so that the server starts up already current.

Click Next.

Step 5 — Install rules

Setup automatically checks the installation rules:

  • the .NET Framework is present;
  • no restart is pending;
  • registry access;
  • the Windows firewall — a warning if port 1433 is not open.

If everything is green (✅ Passed), click Next. On a ⚠️ Warning about the firewall, you can configure the rules after installation.

Step 6 — Feature selection

This is one of the most important pages. Here is what each component does.

Instance features

ComponentDescriptionProduction recommendation
Database Engine ServicesThe core relational engine — storage, queries, transactions, securityAlways select
↳ SQL Server ReplicationTransactional, merge and snapshot replicationAs needed
↳ Full-Text and Semantic Extractions for SearchFull-text search in text columnsAs needed
↳ Data Quality ServicesData profiling and cleansingRarely needed on a production server
↳ PolyBase Query Service for External DataQuerying external data (Hadoop, Azure Blob, S3, Oracle) through T-SQLIf you need multi-source access
↳ Machine Learning ServicesRunning R / Python scripts inside the engineIf you need in-database ML
Analysis ServicesOLAP, tabular models, data miningA dedicated server is recommended
Reporting ServicesSSRS reportsA dedicated server is recommended
Integration ServicesETL, SSIS packagesA dedicated server is recommended

Shared features

ComponentDescription
Client Tools ConnectivityConnection libraries (OLEDB, ODBC)
Client Tools SDKDevelopment APIs
SQL Client Connectivity SDKDrivers for third-party applications

Installation directories

  • Instance root directory: D:\Program Files\Microsoft SQL Server\ — avoid C:\.
  • Shared feature directory: for the components shared between instances.

Good practice: never leave the SQL Server binaries on the system drive C:\. Use a dedicated volume.

Click Next.

Step 7 — Instance configuration

OptionDescription
Default instanceThe server is reached by the machine name alone: SERVERNAME
Named instanceThe server is reached as SERVERNAME\INSTANCE_NAME
  • Instance ID: the internal identifier used for the directories and registry keys.
  • Instance root directory: confirm the path set in the previous step.

When should you use a named instance? When you have to host several SQL Server instances on the same server — a production instance plus a pre-production one, for instance. Each named instance has its own services, its own memory and its own ports.

Note: SQL Server Browser has to be running for clients to discover named instances.

Click Next.

Step 8 — Server configuration

This page has two important tabs.

The “Service Accounts” tab

Every SQL Server service runs under a Windows account. These are the configurable services:

ServiceRecommended production accountWhy
SQL Server Database EngineA dedicated domain account (e.g. DOMAIN\svc-sqlengine) or a gMSASecurity isolation, auditing, network access
SQL Server AgentA dedicated domain account (e.g. DOMAIN\svc-sqlagent) or a gMSARunning jobs, maintenance, backups
SQL Server BrowserNT AUTHORITY\LOCAL SERVICENamed instance discovery

gMSA (Group Managed Service Accounts) is the best practice in an Active Directory environment. Active Directory manages the password automatically, with no human intervention.

Startup options:

OptionDescription
AutomaticThe service starts with Windows
ManualStarted on demand
DisabledThe service is disabled

Set the Database Engine and the Agent to Automatic. Set the Browser to Automatic only if you have named instances.

Tick Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service. This enables Instant File Initialization (IFI), which considerably speeds up the creation and growth of data files by skipping the zeroing of the disk blocks.

The “Collation” tab

The collation determines the sorting and comparison rules for character strings across the whole instance.

SettingRecommended valueExplanation
Database Engine collationLatin1_General_100_CI_AS_SC_UTF8CI = case insensitive, AS = accent sensitive, SC = supplementary characters, UTF8 = native Unicode support

Why this is critical: the server collation applies to the system databases (master, model, msdb, tempdb) and becomes the default collation of every new database. It cannot be changed after installation without rebuilding master. Take the time to get it right.

Careful: if you have to work with existing databases, align the collation to avoid Cannot resolve the collation conflict errors.

Click Next.

Step 9 — Database Engine configuration

This is the richest page of the wizard. It has four tabs.

The “Server Configuration” tab

Authentication mode:

ModeDescriptionRecommendation
Windows Authentication ModeOnly Windows and AD accounts can connect✅ The most secure — prefer this
Mixed ModeWindows authentication plus SQL logins with a passwordNecessary if applications use SQL logins, sa among them

If you choose Mixed Mode:

  • set a strong password for the sa account: 12 characters or more, upper and lower case, digits, special characters;
  • the sa account is the number one target of attacks. In production, disable it after installation and use named accounts.

Specify SQL Server administrators:

Click Add Current User to add your Windows account as an administrator of the instance. Also add a DBA AD group, for instance DOMAIN\GRP-SQLAdmins.

Never leave this list empty. You would risk losing administrative access to the instance.

The “Data Directories” tab

This is where you set the default paths for the files:

DirectoryRecommended pathRole
Data root directoryE:\MSSQL\The root of the data
User database directoryE:\MSSQL\Data\.mdf / .ndf files
User database log directoryF:\MSSQL\Log\.ldf files
Backup directoryH:\MSSQL\Backup\.bak backups

The golden rule: always separate data files and transaction logs onto distinct volumes. Transaction logs use sequential writes and should not share a volume with the random I/O of the data files.

The “TempDB” tab

SQL Server 2025 offers an optimized automatic TempDB configuration from installation:

SettingRecommendationExplanation
Number of filesOne file per logical core, up to 8 filesReduces contention on the allocation pages (PFS, GAM, SGAM)
Initial size per file≥ 64 MB, ideally 1 GB each in productionAvoids repeated auto-growth at startup
Autogrowth64 MB per file — avoid percentagesPredictable, uniform growth
TempDB data directoryG:\MSSQL\TempDB\A dedicated volume, ideally NVMe
TempDB log directoryG:\MSSQL\TempDBLog\Can share the volume with the TempDB data

Why 8 files? TempDB is a contention hot spot. Multiplying the data files spreads the allocation requests across several files, which removes the latch waits on the system pages. Beyond 8, the marginal gain is negligible except on very specific workloads.

Every TempDB file must be the same size. SQL Server uses a proportional fill algorithm that distributes writes according to file size. Files of different sizes create an imbalance.

The “MaxDOP” tab

Since SQL Server 2019, the wizard proposes a recommended MAXDOP value based on the CPU topology it detects.

ScenarioRecommended MAXDOP
One NUMA node, ≤ 8 logical cores= the number of logical cores
One NUMA node, > 8 logical cores8
Multiple NUMA nodes, ≤ 16 cores per node= the number of cores per NUMA node
Multiple NUMA nodes, > 16 cores per node16, or half the cores per node

MAXDOP = 0 is discouraged. It means SQL Server uses every CPU for a single parallel query, which can saturate the server and block the other concurrent queries.

Accept the proposed value or adjust it. You can change it later.

The “Memory” tab

Since SQL Server 2022 the wizard also proposes the memory configuration:

SettingRecommendation
Min Server MemoryLeave at 0, except when several instances share a server
Max Server MemoryTotal RAM − 4 GB for the OS − memory for the other services

The formula:

Max Server Memory = total_RAM - 4096 MB (OS) - RAM_for_other_services

Examples:

Total RAMReserved for the OSMax Server Memory
32 GB4 GB28 GB (28,672 MB)
64 GB4 GB60 GB (61,440 MB)
128 GB6 GB122 GB (124,928 MB)

Why cap the memory? By default SQL Server consumes all the available RAM and does not give it back. Without a cap the operating system can run short of memory, causing slowdowns or crashes. max server memory is the first setting to configure on any production instance.

Click Next.

Step 10 — Ready to install

The summary page shows everything you selected:

  • edition and product key;
  • selected features;
  • directory paths;
  • service accounts;
  • authentication mode;
  • TempDB, MAXDOP and memory configuration.

Read this page carefully. It is your last chance to correct a mistake before the installation.

Tip: the path to the configuration file (ConfigurationFile.ini) is shown at the bottom of the page. Copy that file and keep it. You can reuse it for identical unattended installations on other servers:

setup.exe /ConfigurationFile="C:\SQLConfig\ConfigurationFile.ini" /IAcceptSQLServerLicenseTerms

Click Install.

Step 11 — Installation progress and completion

The installation generally takes between 10 and 30 minutes, depending on the hardware and the features selected. A progress bar shows where each component stands.

At the end, the Complete page shows the status of each feature:

  • Succeeded: installed correctly.
  • Failed: check the error log in C:\Program Files\Microsoft SQL Server\170\Setup Bootstrap\Log\.

If the installation fails, Summary.txt and the associated log folder hold the details of the error.

Click Close.


Installing SSMS (SQL Server Management Studio)

SQL Server 2025 works with SSMS 21 and SSMS 22. The tool is no longer included in the installation media.

  1. Download SSMS from https://aka.ms/ssms/22/release/vs_SSMS.exe
  2. Run the installer and follow the instructions.
  3. Restart if prompted.

Post-installation configuration in SSMS

Connecting to the instance

  1. Launch SSMS.
  2. In the Connect to Server window:
    • Server type: Database Engine
    • Server name: SERVERNAME for a default instance, or SERVERNAME\INSTANCE
    • Authentication: Windows Authentication
  3. Click Connect.

Server properties

Right-click the server in Object Explorer → Properties. Here is what each page holds.

The “General” page

Read-only information: server name, version, edition, OS, collation, memory, number of processors, root directory. Useful for a quick check of the configuration.

The “Memory” page

SettingDescriptionRecommended value
Minimum server memory (MB)The memory floor reserved for SQL Server0, except with several instances
Maximum server memory (MB)The ceiling allocated to the buffer poolRAM − 4 GB − other services

The T-SQL equivalent:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

EXEC sp_configure 'max server memory (MB)', 28672;  -- 28 GB
RECONFIGURE;

EXEC sp_configure 'min server memory (MB)', 0;
RECONFIGURE;

The “Processors” page

SettingDescription
Max degree of parallelism (MAXDOP)The maximum number of cores for one parallel query
Cost threshold for parallelismThe estimated cost above which the engine considers a parallel plan. Default: 5
Boost SQL Server priorityRaises the priority of the sqlservr.exe process — do not enable in production

The T-SQL equivalent:

EXEC sp_configure 'max degree of parallelism', 8;
RECONFIGURE;

EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

Cost threshold for parallelism: the default of 5 is far too low for most production workloads. A value between 25 and 50 is a good starting point. It stops small queries from needlessly triggering a parallel plan, which consumes resources and threads.

The “Security” page

SettingOptions
Server authenticationWindows Authentication Mode / Mixed Mode
Login auditingNone / Failed logins only / Successful logins only / Both
Enable Common Criteria complianceFor Common Criteria certified environments

Recommendation: enable auditing of failed logins at the very least. It lets you detect intrusion attempts.

The “Database Settings” page

SettingDescriptionRecommendation
Default data locationThe default path for .mdf filesE:\MSSQL\Data\
Default log locationThe default path for .ldf filesF:\MSSQL\Log\
Default backup locationThe default path for .bak filesH:\MSSQL\Backup\
Compress backupEnables compression by defaultEnable — reduces backup size by 60–80 %
Recovery interval (minutes)The target recovery time after a crashLeave at 0, automatic

The T-SQL equivalent for backup compression:

EXEC sp_configure 'backup compression default', 1;
RECONFIGURE;

The “Advanced” page

The settings that matter:

SettingDefaultRecommendationExplanation
Optimize for Ad hoc WorkloadsFalseTrueStops single-use plans from polluting the plan cache. On the first call only a stub is cached; the full plan is cached on the second call
Remote Login Timeout1010–20Timeout in seconds for linked server connections
Remote Query Timeout600As neededTimeout for distributed queries
Allow Triggers to Fire OthersTrueTrueAllows triggers to cascade
Blocked Process Threshold05–10Above 0, generates an XML report in the default trace when a process is blocked for N seconds

The T-SQL equivalent:

EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;

EXEC sp_configure 'blocked process threshold (s)', 5;
RECONFIGURE;

Configuring the model database

The model database is the template for every new database. Configure it properly:

-- Reasonable initial size and growth
ALTER DATABASE model MODIFY FILE
(NAME = modeldev, SIZE = 256MB, FILEGROWTH = 64MB);

ALTER DATABASE model MODIFY FILE
(NAME = modellog, SIZE = 128MB, FILEGROWTH = 64MB);

Why? By default the initial size is 8 MB with percentage-based growth. That produces frequent auto-growth events and a proliferation of VLFs (Virtual Log Files), which degrades recovery performance.


SQL Server Configuration Manager

The SQL Server Configuration Manager (SQLServerManager17.msc for SQL Server 2025) is the system tool for managing the services, the network protocols and the client aliases.

Access: search for “SQL Server Configuration Manager” in the Start menu, or open compmgmt.msc (Computer Management), where it appears as a snap-in.

The Configuration Manager tree

SQL Server Configuration Manager
├── SQL Server Services
│   ├── SQL Server (MSSQLSERVER)          -- Database engine
│   ├── SQL Server Agent (MSSQLSERVER)    -- Job scheduler
│   ├── SQL Server Browser                -- Instance discovery
│   ├── SQL Full-text Filter Daemon       -- Full-text search
│   └── SQL Server Integration Services   -- SSIS, if installed
├── SQL Server Network Configuration
│   └── Protocols for MSSQLSERVER
│       ├── Shared Memory
│       ├── Named Pipes
│       └── TCP/IP
└── SQL Native Client Configuration
    ├── Client Protocols
    └── Aliases

SQL Server Services

Right-click a service → Properties.

The “Log On” tab

OptionDescription
Built-in accountLocal System, Local Service, Network Service
This accountA domain account or a gMSA

In production, always use a dedicated domain account or a gMSA. Never use Local System: it has excessive rights on the machine.

The “Service” tab

PropertyDescription
Start ModeAutomatic / Manual / Disabled
Process IDThe PID of the running process
Binary PathThe path to sqlservr.exe

The “Startup Parameters” tab

The engine startup parameters:

ParameterMeaning
-dPath to master.mdf
-lPath to mastlog.ldf
-ePath to the error log (ERRORLOG)

You can add further parameters:

FlagEffectWhen to use it
-T1118Disables mixed extent allocations for system pagesBuilt in by default since SQL Server 2016, but worth knowing
-T3226Removes successful backup messages from the error logReduces noise in the ERRORLOG when backups are frequent

SQL Server Network Configuration — protocols

Shared Memory

  • Use: local connections only, client and server on the same machine.
  • Configuration: no options. Enabled by default.
  • Production: leave it enabled, for local SSMS connections and maintenance scripts.

Named Pipes

  • Use: LAN connections, mostly in legacy environments.
  • Configuration: the pipe name, \\.\pipe\sql\query by default.
  • Production: disable it unless you have a specific need. TCP/IP is preferable.

TCP/IP

This is the main protocol for network connections. Right-click → Properties.

The “Protocol” tab:

SettingDescriptionRecommendation
EnabledEnables or disables TCP/IPYes
Keep AliveThe interval in ms for keep-alive packets30000, the default
Listen AllListen on every IP addressYes in most cases

The “IP Addresses” tab:

Every network interface is listed — IP1, IP2 and so on — plus an IPAll section:

SettingDescriptionRecommendation
TCP Dynamic PortsThe port assigned dynamically at startupClear this field for a default instance
TCP PortA static port1433 for the default instance

Production good practice:

  • default instance: port 1433, fixed;
  • named instance: assign a custom static port, 14330 for instance, rather than leaving a dynamic port;
  • create a Windows firewall rule allowing the chosen port.

Configuring the firewall with PowerShell:

New-NetFirewallRule -DisplayName "SQL Server 2025" `
  -Direction Inbound -Protocol TCP -LocalPort 1433 `
  -Action Allow -Profile Domain

# For SQL Server Browser (UDP 1434) — named instances only
New-NetFirewallRule -DisplayName "SQL Server Browser" `
  -Direction Inbound -Protocol UDP -LocalPort 1434 `
  -Action Allow -Profile Domain

Important: after any change to the network protocols, you have to restart the SQL Server service for it to take effect.

SQL Native Client Configuration

Client Protocols

The order in which the client tries the protocols:

  1. Shared Memory, for a local connection
  2. TCP/IP
  3. Named Pipes

You can change the order or disable a protocol by right-clicking → Properties under Client Protocols.

Aliases

Aliases create alternative connection names pointing at a specific server and port. Useful for:

  • changing server without touching the connection strings of your applications;
  • using a logical name (SQL-PROD) instead of a technical one (SRV-SQL-PRD-01\INST01,14330).
FieldExample
Alias NameSQL-PROD
ProtocolTCP/IP
ServerSRV-SQL-PRD-01
Port14330

Post-installation checks

Run these T-SQL queries to validate the configuration:

-- 1. Version and edition
SELECT @@VERSION;
SELECT SERVERPROPERTY('ProductVersion')   AS Version,
       SERVERPROPERTY('Edition')          AS Edition,
       SERVERPROPERTY('ProductLevel')     AS ServicePack,
       SERVERPROPERTY('Collation')        AS Collation;

-- 2. Memory configuration
SELECT name, value_in_use
FROM sys.configurations
WHERE name IN ('max server memory (MB)', 'min server memory (MB)');

-- 3. MAXDOP and cost threshold
SELECT name, value_in_use
FROM sys.configurations
WHERE name IN ('max degree of parallelism', 'cost threshold for parallelism');

-- 4. Optimize for ad hoc workloads
SELECT name, value_in_use
FROM sys.configurations
WHERE name = 'optimize for ad hoc workloads';

-- 5. TempDB: number of files and sizes
SELECT name, physical_name, size * 8 / 1024 AS [Size_MB],
       growth * 8 / 1024 AS [Growth_MB]
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

-- 6. Backup compression
SELECT name, value_in_use
FROM sys.configurations
WHERE name = 'backup compression default';

The post-installation architecture

graph LR
    subgraph "Windows Server"
        OS["OS + 4 GB RAM reserved"]
        FW["Windows firewall<br/>TCP port 1433"]
    end
    subgraph "SQL Server 2025"
        ENG["Database Engine<br/>(sqlservr.exe)"]
        AGT["SQL Server Agent<br/>(sqlagent.exe)"]
        BRW["SQL Server Browser<br/>(sqlbrowser.exe)"]
    end
    subgraph "Storage"
        D["D:\ Binaries"]
        E["E:\ Data (.mdf/.ndf)"]
        F["F:\ Logs (.ldf)"]
        G["G:\ TempDB"]
        H["H:\ Backups (.bak)"]
    end
    subgraph "Protocols"
        SM["Shared Memory"]
        TCP["TCP/IP :1433"]
        NP["Named Pipes"]
    end

    ENG --> D
    ENG --> E
    ENG --> F
    ENG --> G
    ENG --> H
    ENG --> SM
    ENG --> TCP
    ENG --> NP
    TCP --> FW
    AGT --> ENG
    BRW --> |UDP 1434| FW

Production configuration checklist

graph TD
    A[Installation finished] --> B{Max Server Memory set?}
    B -->|No| B1[Set it now]
    B -->|Yes| C{MAXDOP set?}
    C -->|No| C1[Set it according to NUMA]
    C -->|Yes| D{Cost threshold ≥ 25?}
    D -->|No| D1[Raise it to 25-50]
    D -->|Yes| E{TempDB: 4-8 files?}
    E -->|No| E1[Add files]
    E -->|Yes| F{Instant File Initialization on?}
    F -->|No| F1[Enable it through gpedit.msc]
    F -->|Yes| G{Backups configured?}
    G -->|No| G1[Set up a maintenance plan]
    G -->|Yes| H[✅ Ready for production]

The essential sp_configure commands

-- Enable the advanced options
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- Memory
EXEC sp_configure 'max server memory (MB)', 28672;
RECONFIGURE;

-- Parallelism
EXEC sp_configure 'max degree of parallelism', 8;
RECONFIGURE;

EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

-- Plan cache optimization
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;

-- Backup compression
EXEC sp_configure 'backup compression default', 1;
RECONFIGURE;

-- Blocked process threshold, for monitoring
EXEC sp_configure 'blocked process threshold (s)', 5;
RECONFIGURE;

-- Final check
SELECT name, value_in_use
FROM sys.configurations
WHERE name IN (
    'max server memory (MB)',
    'min server memory (MB)',
    'max degree of parallelism',
    'cost threshold for parallelism',
    'optimize for ad hoc workloads',
    'backup compression default',
    'blocked process threshold (s)'
)
ORDER BY name;

Further reading