Table of contents
- Introduction
- 1. New Features in Security
- 2. Intelligent Query Processing (IQP) Enhancements
- 3. Important Improvements in Storage and File Management
- 4. Backup & Restore – New Generation
- 5. Agent, Automation and Governance
- 6. Smart Management of Memory, CPU and IO
- 7. New Features in High Availability and Disaster Recovery
- 8. Monitoring and Observability
- 9. Other Important Features for DBAs
- Summary Table — SQL Server 2025 Key Enhancements
- Conclusion
- SQL Server 2025 Upgrade Checklist
- References
Introduction
1. New Features in Security
1.1 Role-Based Access Control (RBAC) Enhancements
Examples include roles for API execution or AI model usage (exact names depend on the final Microsoft release).
.
- Reduces the need for high-privilege accounts
- Helps meet compliance standards (GDPR, HIPAA, ISO)
- Simplifies permission management in hybrid and AI-driven environments
Test example:
-- Create login and user
CREATE LOGIN ai_service_login WITH PASSWORD = 'StrongPass!2025';
CREATE USER ai_service_user FOR LOGIN ai_service_login;
-- Grant a limited AI role (example name)
ALTER ROLE db_ai_executor ADD MEMBER ai_service_user;
-- Test delegated execution
EXEC AS USER = 'ai_service_user';
EXEC sp_invoke_external_rest_endpoint @url = 'https://api.openai.com/...';
REVERT;
1.2 OAuth and Managed Identity Support (Azure-Compatible Security)
.
- Removes the need to store secrets or access keys
- Automatically rotates credentials
- Greatly improves hybrid security
- Reduces administrative overhead for backups and external connections
Test example:
-- Conditional masking
ALTER TABLE Customers
ALTER COLUMN Email
ADD MASKED WITH (
FUNCTION = 'partial(1,"XXX@",0)',
CONDITION = 'CURRENT_USER() <> ''admin'''
);
-- Normal users see masked data
SELECT Email FROM Customers;
1.3 Advanced Dynamic Data Masking
- Conditional masking based on roles or user context
- More advanced partial-masking patterns
- Better integration with Always Encrypted, including pattern search on masked columns
Why It Matters
- Protects sensitive information (PII) in real-time
- Allows safe access for developers, testers, and reporting systems
- Improves compliance without changing application logic
Test example:
-- Conditional masking
ALTER TABLE Customers
ALTER COLUMN Email
ADD MASKED WITH (
FUNCTION = 'partial(1,"XXX@",0)',
CONDITION = 'CURRENT_USER() <> ''admin'''
);
-- Normal users see masked data
SELECT Email FROM Customers;
1.4 Improvements in Auditing and Encryption
- Auditing: New actions for REST calls, AI functions, vector operations; improved performance; support for cold/archived audit logs
- PBKDF2 Password Hashing: SQL logins now default to PBKDF2 with 100,000 iterations and SHA-512, making password cracking significantly harder
- Always Encrypted Enhancements:
- More supported operations (including pattern matching)
- Stronger RSA padding (OAEP-256)
- TLS 1.3 and TDS 8.0 enabled by default for major features (AG, Replication, etc.)
Why It Matters
- Stronger protection against brute-force and credential-stuffing attacks
- Better transparency and traceability for security monitoring
- Improved security posture by default—less manual configuration for DBAs
Test example:
-- New login using PBKDF2 hashing
CREATE LOGIN test_login WITH PASSWORD = 'StrongPass2025!';
SELECT name, password_hash
FROM sys.sql_logins
WHERE name = 'test_login';
-- Audit external REST calls
CREATE SERVER AUDIT REST_Audit TO FILE (FILEPATH = 'C:\Audits\');
CREATE SERVER AUDIT SPECIFICATION REST_Spec
FOR SERVER AUDIT REST_Audit
ADD (EXECUTE ON sp_invoke_external_rest_endpoint BY PUBLIC);
ALTER SERVER AUDIT REST_Audit WITH (STATE = ON);
2. Intelligent Query Processing (IQP) Enhancements
2.1 Advanced Adaptive Plan Optimization
- Adaptive Join Switching: The engine can switch between join types (Hash Join ↔ Nested Loops) based on actual row counts.
- Memory Grant Feedback (3rd Generation): Provides more accurate adjustments to memory grants to avoid spills and unnecessary memory usage.
- Optional Parameter Plan Optimization (OPPO): Creates separate execution plans for NULL and non-NULL parameter values—especially useful for optional or highly selective parameters.
- More stable performance across variable workloads
- Fewer recompilations
- Less need for hints or manual plan forcing
- Better behavior for queries with optional filters
Test example:
-- Optional parameter scenario
CREATE PROCEDURE GetOrders @CustomerID INT = NULL
AS
SELECT *
FROM Orders
WHERE (@CustomerID IS NULL OR CustomerID = @CustomerID);
GO
-- Different executions build different plans under OPPO
EXEC GetOrders @CustomerID = 123; -- Typically uses an index seek
EXEC GetOrders; -- Uses a scan for NULL
-- View plans in Query Store
SELECT plan_id, reason, last_execution_time
FROM sys.query_store_plan
WHERE query_id = (
SELECT query_id
FROM sys.query_store_query
WHERE query_text LIKE '%GetOrders%'
);
2.2 Cardinality Estimation 3.0
- Skewed or uneven data distributions
- Nullable columns and complex predicates
- Expressions such as CASE, computed columns, and scalar functions
- CE Feedback for expressions, allowing SQL Server to correct misestimates automatically.
- More accurate plans
- Better join ordering
- Reduced risk of poor estimates that lead to bad performance
- Improved stability without hinting or manual statistics adjustments
Test example:
-- Example with skewed data
CREATE TABLE Sales (
Region VARCHAR(50),
Amount DECIMAL(10,2)
);
INSERT INTO Sales VALUES ('North', 100000), ('South', 150);
SELECT Region, SUM(Amount)
FROM Sales
WHERE Region = 'North'
GROUP BY Region;
-- After several executions, CE Feedback helps adjust cardinality
-- View CE feedback info
SELECT reason, feedback_state_desc
FROM sys.query_store_plan_feedback;
2.3 Smart Parallelism
-
-
- Degree of Parallelism (DOP) Feedback : Adjusts DOP automatically based on past executions. If a query shows excessive overhead, the engine reduces the parallelism level for future runs.
- Dynamic Thread Rebalancing : Distributes work more evenly across threads during execution.
- Workload-Level Auto-Tuning : Automatically selects optimal MaxDOP settings under different workloads.
-
- Reduces waits like CXPACKET and CXCONSUMER
- Prevents unnecessary high-DOP executions
- Better performance on multi-core CPUs without manual tuning
- Improves overall server throughput
Test example:
-- Parallel workload
SELECT COUNT(*)
FROM LargeTable
GROUP BY Category;
-- View DOP Feedback via Query Store
SELECT query_id, plan_id, reason
FROM sys.query_store_plan
WHERE reason LIKE '%DOP%';
2.4 Optimized Locking and Concurrency
- TID Locking (Transaction ID Locking) : Keeps only one lock per transaction, releasing other locks earlier during execution.
- Lock After Qualification (LAQ) : Locks rows after predicate evaluation, not before, reducing lock contention during scans.
- Significant reduction in blocking during heavy OLTP workloads
- Lower lock memory usage
- Fewer lock escalations
- Better performance without application changes
Test example:
ALTER DATABASE CURRENT SET ACCELERATED_DATABASE_RECOVERY = ON;
ALTER DATABASE SCOPED CONFIGURATION SET OPTIMIZED_LOCKING = ON;
-- Session 1
BEGIN TRAN;
UPDATE LargeTable
SET Value = 1
WHERE ID % 100 = 0; -- Holds transaction open
-- Session 2
SELECT *
FROM LargeTable
WHERE ID % 100 = 1; -- Less blocking with LAQ/TID
-- Investigate locks
SELECT resource_type, request_mode, request_status
FROM sys.dm_tran_locks;
3. Important Improvements in Storage and File Management
3.1 TempDB Intelligent Allocation
- Tempdb Space Resource Governance
Using Resource Governor, SQL Server can now limit the amount of tempdb space consumed by each workload group. This prevents scenarios where one workload floods tempdb and disrupts other sessions.
- Lower Contention on Allocation Maps
Improvements in allocation algorithms reduce bottlenecks in PFS, GAM, and SGAM pages, providing better parallel performance.
- Auto-balancing Behavior for Files
While proportional fill is still used, governance ensures that uneven file sizes are less harmful. DBAs still need to size files evenly, but the risk of runaway allocation is reduced.
- Tmpfs Support for Linux Deployments
SQL Server on Linux can now place tempdb files on tmpfs, a memory-backed filesystem. This significantly reduces latency for operations that rely heavily on tempdb, such as large sorts, hash joins, and spill events.
Why It Matters for DBAs- Stronger isolation between workloads
- Lower risk of tempdb running out of space
- Better performance for parallel operations
- Faster tempdb on Linux with RAM-backed storage
- Less manual tuning required
Test example:
-- Define Resource Governor rules for tempdb control
CREATE RESOURCE POOL rp_LimitedTempDB WITH (MAX_IOPS_PER_VOLUME = 2000);
CREATE WORKLOAD GROUP wg_LimitedTempDB USING rp_LimitedTempDB;
ALTER RESOURCE GOVERNOR RECONFIGURE;
-- Enable ADR for tempdb (requires SQL Server restart)
ALTER DATABASE tempdb SET ACCELERATED_DATABASE_RECOVERY = ON;
-- Example: relocating tempdb files to tmpfs on Linux
ALTER DATABASE tempdb MODIFY FILE (
NAME = tempdev,
FILENAME = '/tmpfs/tempdb.mdf'
);
3.2 Faster Snapshots and Copy-on-Write
- ADR Enhancements
Accelerated Database Recovery reduces the volume of versioning work stored in tempdb. This indirectly improves snapshot and copy-on-write performance.
- Storage Subsystem Improvements
When tempdb is placed on tmpfs (Linux) or fast NVMe devices (Windows), snapshot isolation workloads experience reduced latency.
- Better Coordination with Version Store
Version store operations—used by snapshot isolation, READ COMMITTED SNAPSHOT, and online indexing—are more efficient due to optimized space management.
Why It Matters for DBAs- Faster queries using snapshot isolation
- Reduced tempdb pressure in read-heavy workloads
- Better performance for ETL processes and long-running reports
- Lower I/O cost during versioning
Test example:
-- Creating a database snapshot (faster with ADR enabled)
CREATE DATABASE AdventureWorks_Snapshot
ON (
NAME = AdventureWorks_Data,
FILENAME = 'C:\Snapshots\AW_2025.ss'
)
AS SNAPSHOT OF AdventureWorks;
4. Backup & Restore – New Generation
4.1 Advanced Backup Enhancements
- Full, Differential, and Log Backups on Secondary Replicas
Unlike earlier versions (where secondary backups were mostly copy-only), SQL Server 2025 fully supports running all backup types on secondary replicas in an Always On Availability Group. This offloads I/O workload from the primary and improves overall system responsiveness.
- ZSTD Compression Algorithm
The new Zstandard (ZSTD) compression offers better ratios and faster processing compared to MS_XPRESS.
It supports three levels:
-
-
- LOW (default – fast, balanced)
- MEDIUM (better ratio)
- HIGH (maximum compression, slightly higher CPU)
-
- Immutable Backups in Azure Blob Storage
SQL Server can now write backups into Azure immutability-enabled containers, preventing accidental or malicious deletion or modification—an essential defense against ransomware.
- Backup to URL Using Managed Identity
When SQL Server is Azure Arc–enabled, backups can authenticate to Azure Blob Storage using Managed Identity (MI). This removes the need for SAS tokens or SQL credentials.
Why It Matters for DBAs- Reduced load on production servers
- Faster, smaller backups
- Stronger protection against ransomware and insider threats
- Easier and more secure cloud integration
- Lower operational complexity
Test example:
-- Backup using ZSTD compression
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW.bak'
WITH COMPRESSION (ALGORITHM = ZSTD, LEVEL = MEDIUM), STATS = 10;
-- Full backup on a secondary replica in Availability Group
BACKUP DATABASE AdventureWorks
TO DISK = '\\shared\backups\AW_full_secondary.bak'
WITH FORMAT, INIT;
-- Immutable backup to Azure Blob Storage
BACKUP DATABASE AdventureWorks
TO URL = 'https://storageaccount.blob.core.windows.net/container/AW_immutable.bak'
WITH FORMAT, STATS = 10;
-- Backup to URL using Managed Identity (Azure Arc)
BACKUP DATABASE AdventureWorks
TO URL = 'https://storageaccount.blob.core.windows.net/container/AW_mi.bak';
4.2 Improvements in Online Restore
- Faster Checksums and Hardware-Accelerated Validation
Integrated with ZSTD and new CPU instruction sets, restore operations can complete checksum verification more quickly.
- Better Corruption Detection During Restore
SQL Server identifies problematic pages sooner, reducing wasted restore time.
- More Efficient Partial/Filegroup Restore
These operations benefit from the improved recovery process, especially when ADR (Accelerated Database Recovery) is enabled.
Why It Matters for DBAs- Less downtime in critical restore scenarios
- Faster validation of backup integrity
- More predictable recovery operations
Test example:
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AW.bak'
WITH CHECKSUM, STATS = 10;
4.3 Automatic Background Corruption Checks
- Faster execution of DBCC CHECKDB
- Improved version store stability (due to ADR enhancements)
- Stronger default checksum validation
- Early detection of failing storage or corrupted pages
- Reduced chance of silent data corruption
- More efficient maintenance windows
Test example:
-- Ensure database uses checksum protection
ALTER DATABASE AdventureWorks SET PAGE_VERIFY CHECKSUM;
-- Improved CHECKDB performance in SQL Server 2025
DBCC CHECKDB ('AdventureWorks') WITH NO_INFOMSGS, ALL_ERRORMSGS;
5. Agent, Automation and Governance
5.1 Smart SQL Agent Jobs
-
- Standard frequency schedules (daily, weekly, monthly)
- Idle CPU conditions
- Alert-based execution
- Integration with PowerShell and external automation
Test example(standard schedule):
-- Create a standard SQL Agent job with a daily schedule
EXEC msdb.dbo.sp_add_job @job_name = 'Nightly Maintenance';
EXEC msdb.dbo.sp_add_jobschedule
@job_name = 'Nightly Maintenance',
@name = 'Daily Schedule',
@freq_type = 4, -- Daily
@active_start_time = 020000; -- 02:00 AM
5.2 System Insights (Enhanced Predictive Monitoring)
-
- Better prediction of CPU bottlenecks
- Detection of log write delays
- Tempdb pressure forecasting
- Improved learning models when connected to Fabric or Azure Monitor
Test example:
-- Enable external scripts (required for System Insights)
EXEC sp_configure 'external scripts enabled', 1;
RECONFIGURE;
-- Review the performance indicators exposed by System Insights
SELECT *
FROM sys.dm_os_performance_counters
WHERE counter_name LIKE '%System Insights%';
5.3 Governance and GitOps Integration
-
- Azure Policy for configuration governance
- GitOps (Flux) for Kubernetes-based SQL MI deployments
- Desired State Configuration (DSC) for Windows-based SQL instances
Test example(dbatools export for GitOps):
# Export SQL Server instance configuration
Export-DbaInstance -SqlInstance "ServerName" -Path "C:\Git\Config"
# Then commit files to Git for drift detection
5.4 Built-in AI Assistance for DBAs
- Azure SQL Intelligent Performance
- SQL Database Advisor
- Microsoft Copilot in Azure and SSMS
- Fabric Monitoring
- Query Store regression detection
- Plan comparison tools in SSMS 20+
- AI-assisted suggestions through GitHub Copilot in SSMS
- Telemetry shared with Azure Monitor (when enabled)
Test example(Query Store regression detection):
-- Enable Query Store if not already enabled
ALTER DATABASE CURRENT SET QUERY_STORE = ON;
-- Detect performance regressions
SELECT *
FROM sys.query_store_plan
WHERE regression_status_desc IS NOT NULL;
6. Smart Management of Memory, CPU and IO
6.1 Intelligent Memory Manager
-
- Third-Generation Memory Grant Feedback
The new version refines Memory Grant Feedback with better detection of over-allocation and under-allocation. Memory grants adjust more accurately based on runtime statistics, reducing:
-
-
-
- Disk spills (e.g., “Sort Spills”, “Hash Spills”)
- Excessive memory consumption by a single query
- Competition between large and small workloads
-
-
-
- Smarter Buffer Pool Eviction
SQL Server now uses improved algorithms to determine which pages should stay in the buffer pool:
-
-
-
- Frequently used (hot) pages remain cached longer.
- Rarely used (cold) pages are evicted earlier.
- This reduces repeated I/O and improves read performance.
-
-
-
- Better Memory Broker Behavior
Although SQL Server 2025 does not introduce dynamic buffer pool resizing, improvements in memory broker logic and the raised memory cap for Standard Edition (up to 256 GB) result in:
-
-
-
- More predictable memory distribution
- Less sudden pressure during peak workloads
- Fewer stalls on large analytical queries
-
-
- Lower memory pressure under mixed workloads
- More stable query behavior
- Fewer tempdb spills and less I/O amplification
Test example:
-- Check memory grants and feedback status
SELECT mg.session_id,
mg.requested_memory_kb,
mg.granted_memory_kb,
mg.used_memory_kb,
mg.is_feedback_available
FROM sys.dm_exec_query_memory_grants AS mg
WHERE mg.is_feedback_available = 1;
-- Check buffer pool cached pages
SELECT COUNT(*) AS CachedPages,
(COUNT(*) * 8) / 1024 AS CachedMB
FROM sys.dm_os_buffer_descriptors;
6.2 IO Latency Management and Monitoring
-
- Better I/O Behavior through IQP and Buffer Pool Improvements
Although SQL Server does not implement explicit “I/O hotspot prediction,” improvements in:
-
-
-
- Memory Grant Feedback
- Optimized Locking
- Buffer pool eviction algorithms
- Tempdb enhancements (including tmpfs support on Linux)
-
-
help reduce unnecessary read/write patterns and lower I/O latency.
-
- Lower Latency for Frequently Accessed Pages
Smarter page residency decisions help SQL Server:
-
-
-
- Keep hot pages in memory
- Reduce trips to storage
- Lower PAGEIOLATCH waits on busy systems
-
-
-
- Improved I/O Visibility through DMVs
SQL Server 2025 enhances monitoring tools rather than adding automatic alerts. The DMV sys.dm_io_virtual_file_stats remains the primary source for diagnosing:
-
-
-
- High-latency disks
- Slow log drives
- Uneven file distribution
- Aging SSD or cloud volumes
-
-
DBAs can build alerts or dashboards based on these metrics.
Note:
SQL Server 2025 still does not support online movement of data or log files between drives. It remains an offline operation.
Why It Matters for DBAs- Lower average latency for OLTP systems
- Better throughput in highly concurrent workloads
- Clearer visibility into which files cause bottlenecks
Test example:
-- Check I/O latency per file with physical file paths
SELECT DB_NAME(vfs.database_id) AS DatabaseName,
mf.physical_name AS FilePath,
vfs.io_stall_read_ms / NULLIF(vfs.num_of_reads, 0) AS AvgReadLatencyMs,
vfs.io_stall_write_ms / NULLIF(vfs.num_of_writes, 0) AS AvgWriteLatencyMs,
vfs.num_of_reads AS TotalReads,
vfs.num_of_writes AS TotalWrites
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
ON vfs.database_id = mf.database_id
AND vfs.file_id = mf.file_id
WHERE vfs.num_of_reads > 0 OR vfs.num_of_writes > 0
ORDER BY AvgReadLatencyMs DESC, AvgWriteLatencyMs DESC;
7. New Features in High Availability and Disaster Recovery
7.1 Always On Enhancements – 2025 Generation
- Faster Failover with Transaction Replay Caching
A new caching mechanism speeds up replaying log records during failover. This reduces the time required for secondary replicas to catch up, resulting in noticeably shorter failover durations.
- Improved Synchronous Commit and Read-Scale Performance
Enhancements to sync commit and asynchronous batch dispatching improve replication efficiency. This lowers latency and increases throughput for readable secondary replicas.
- Backups on Secondaries (Full, Differential, Log)
AG replicas can now run full, differential, and log backups—not only copy-only backups. This offloads overhead from the primary server and supports better operational distribution.
- Query Store Enabled by Default on Readable Secondaries
Query Store automatically runs in read-write mode on readable secondaries, allowing full plan capture, regression detection, and troubleshooting without relying on the primary.
Why It Matters for DBAs- Faster failovers → lower RTO
- More balanced workloads → lower pressure on primary
- Full monitoring on secondaries → better diagnostics in HA setups
- More flexible backup strategies → simpler maintenance windows
Test example:
-- Create Availability Group (primary)
CREATE AVAILABILITY GROUP MyAG
WITH (DISTRIBUTED = OFF)
FOR DATABASE AdventureWorks
REPLICA ON 'PrimaryServer' WITH (
ENDPOINT_URL = 'TCP://primary:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
),
'SecondaryServer' WITH (
ENDPOINT_URL = 'TCP://secondary:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)
);
-- Query Store on secondary (default in 2025)
ALTER DATABASE AdventureWorks
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);
-- Backup on secondary
BACKUP DATABASE AdventureWorks TO DISK = 'N:\Backups\AW.bak';
7.2 Distributed AG (DAG) – vNext Improvements
- Lower-latency log transport through improved flow control.
- Unified Commit Stream (UCS) batching for more efficient forwarding.
- Better support for hybrid topologies (on-premises + Azure SQL MI or Arc-enabled SQL).
- Easier cross-region or multi-datacenter HA/DR.
- More stable performance in globally distributed architectures.
- Better alignment with hybrid-cloud disaster recovery strategies.
Test example:
-- Join AGs into a Distributed AG
ALTER AVAILABILITY GROUP MyAG JOIN AVAILABILITY GROUP DistributedAG;
ALTER AVAILABILITY GROUP DistributedAG
ADD LISTENER 'DistListener' ('192.168.1.100');
7.3 Accelerated Database Recovery (ADR) Improvements
- Faster rollback of long-running transactions using persistent version store.
- Lower transaction log growth during large operations.
- ADR is now active in tempdb, reducing rollback and cleanup delays for tempdb workloads.
- Faster recovery after failover or cancellation.
- Fewer large-rollbacks blocking resources.
- More stable environments with heavy tempdb usage
Test example:
ALTER DATABASE AdventureWorks
SET ACCELERATED_DATABASE_RECOVERY = ON;
-- Check ADR status for tempdb
SELECT name, is_accelerated_database_recovery_on
FROM sys.databases
WHERE name = 'tempdb';
7.4 Real-Time Mirroring to Microsoft Fabric
- Data is streamed into OneLake as Delta Parquet tables.
- Zero-ETL architecture: real-time analytics without complex pipelines.
- Resource Governor limits can prevent heavy workloads from overwhelming the OLTP server.
- Real-time analytics with almost zero overhead on primary systems.
- Simple configuration for hybrid operational + analytics environments.
- Reduced need for ETL-based data movement tools.
Test example:
-- Enable mirroring to Fabric
CREATE DATABASE MIRROR FOR DATABASE AdventureWorks
TO FABRIC 'myfabricworkspace'
WITH (
LAKEHOUSE = 'MyLakehouse',
RESOURCE_GOVERNOR_WORKLOAD_GROUP = 'AnalyticsGroup'
);
8. Monitoring and Observability
8.1 New Dynamic Management Views (DMVs)
- AI Workload Monitoring
DMVs track embedding generation, external model execution, and resource usage when calling REST endpoints through sp_invoke_external_rest_endpoint.
- Query Processing Feedback
New DMVs expose details about:
-
-
- Cardinality Estimation Feedback (for expressions, skewed data, CASE statements, etc.).
- Memory Grant Feedback (3rd generation).
- Plan choice adjustments under IQP.
-
- REST and External Operations
Additional logging and DMV entries support REST workloads including execution times, error codes, and retry logic.
These additions help DBAs understand query behavior, detect regressions, and optimize AI or external-service interactions.
Why It Matters for DBAs- Faster and more accurate troubleshooting.
- Clear visibility into AI and REST workloads (which were previously difficult to monitor).
- Better tuning decisions using runtime feedback data.
Test example:
-- Cardinality Estimation Feedback (new & enhanced)
SELECT database_id, fingerprint, feedback, observed_count, state
FROM sys.dm_exec_ce_feedback_cache;
-- Memory Grant Feedback – queries that received adjustments
SELECT session_id, requested_memory_kb, granted_memory_kb, used_memory_kb,
is_feedback_available
FROM sys.dm_exec_query_memory_grants
WHERE is_feedback_available = 1;
(AI and REST-related DMVs vary by build; final documentation will provide complete names.)
8.2 Performance Dashboard Improvements
- Real-time monitoring of vector and AI workloads.
- Better visualization of wait statistics, memory consumption, and worker thread usage.
- More accurate alerts for long-running queries and abnormal IO latency.
- Quick performance insights without third-party tools.
- Useful for triage and early-stage diagnosis.
- Supports new engine behaviors introduced in SQL Server 2025.
Test example:
To open the dashboard: SSMS → Object Explorer → Server → Reports → Standard Reports → Performance Dashboard8.3 Advanced Extended Events (XE)
- New Events for Modern Behavior
- Parameter sniffing details
- IQP feedback events
- DOP (parallelism) feedback
- Log flush delays
- External REST execution metadata
- Time-Bound Extended Event Sessions
- Safer diagnostics—no more huge XE files from forgotten sessions
- More accurate troubleshooting for parallelism, cardinality issues, and query regressions
- Better visibility into workloads that interact with external REST APIs
Test example:
-- Create a session that automatically stops after 10 minutes
CREATE EVENT SESSION [TimeBoundSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text))
ADD TARGET package0.event_file(SET filename=N'C:\Temp\TimeBound.xel')
WITH (MAX_DURATION = 10 MINUTES);
ALTER EVENT SESSION [TimeBoundSession] ON SERVER STATE = START;
9. Other Important Features for DBAs
9.1 New Transaction Manager
- Fewer random deadlocks
- Smarter lock escalation
- Better concurrency during high OLTP workloads
- No code changes required
- Requires Accelerated Database Recovery (ADR)
- Reduced blocking and deadlocks
- More predictable transaction behavior
- Lower workload on DBAs for troubleshooting concurrency issues
Test example:
-- Enable Optimized Locking (ADR required)
ALTER DATABASE CURRENT SET ACCELERATED_DATABASE_RECOVERY = ON;
ALTER DATABASE SCOPED CONFIGURATION SET OPTIMIZED_LOCKING = ON;
-- Check locks
SELECT resource_type, request_mode, request_status, resource_description
FROM sys.dm_tran_locks;
9.2 Improvements in PolyBase and External Data
- Easier integration with data lakes (Fabric, Azure Data Lake Storage)
- Ability to query external data without heavy ETL pipelines
- More reliable performance in hybrid architectures
Test example:
-- Example: External table using Parquet
CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
LOCATION = 'abfss://container@storageaccount.dfs.core.windows.net',
CREDENTIAL = NULL -- Using Managed Identity
);
CREATE EXTERNAL FILE FORMAT ParquetFormat WITH (FORMAT_TYPE = PARQUET);
CREATE EXTERNAL TABLE ExternalSales (
SaleID INT, Amount DECIMAL(10,2)
)
WITH (
LOCATION = '/sales/',
DATA_SOURCE = AzureStorage,
FILE_FORMAT = ParquetFormat
);
SELECT TOP 10 *
FROM ExternalSales;
9.3 Improvements in Editions and Licensing
- Full Resource Governor in Standard Edition
(including tempdb governance)
- Higher resource limits in Standard Edition
– up to 32 cores – up to 256 GB buffer pool
- Express Edition increased to 50 GB per database
- New Standard Developer Edition
Free for development and testing environments
Why It Matters for DBAs- Lower infrastructure and licensing costs
- Better scalability for small and mid-sized environments
- Reduced need to upgrade to Enterprise Edition prematurely
Test example:
-- Check edition and engine type
SELECT SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;
-- Confirm Resource Governor
SELECT *
FROM sys.resource_governor_workload_groups;
Summary Table — SQL Server 2025 Key Enhancements
| Category | Key Improvements | Practical Impact for DBAs |
|---|---|---|
| Security & Encryption | Always Encrypted v2, Secure Enclaves GA, TDS 2.0 enforcement | Stronger data protection, reduced attack surface, encrypted query execution without exposing data |
| Intelligent Query Processing (IQP) | Adaptive plans (vNext), Memory Grant Feedback 3.0, CE 3.0, Optional Parameter Plan Optimization (OPPO), Smart parallelism (DOP Feedback) | More stable plans, fewer spills, reduced parameter sniffing, improved performance without code changes |
| TempDB & Storage | TempDB Space Governance, improved allocation (PFS/GAM/SGAM), ADR in tempdb, tmpfs on Linux | Reduced contention, fewer outages, faster tempdb operations, improved concurrency |
| Backup & Restore | Backups on secondary replicas, ZSTD compression, immutable Azure backups, Managed Identity authentication | Faster backups, lower storage cost, ransomware protection, no credential management |
| Automation & Governance | Updated System Insights, deeper Azure Arc/Fabric integration, improved Query Store regressions | Better predictive analytics, easier governance, more proactive tuning |
| Memory/CPU/IO Management | Better buffer pool eviction, improved I/O analytics via DMVs, smarter concurrency management | Lower latency, fewer PAGEIOLATCH waits, better stability under high load |
| High Availability & DR | Faster failover, better sync commit, Query Store on secondaries, distributed AG improvements, ADR expansion | Reduced RTO/RPO, better read-scale, more reliable multi-site HA |
| Fabric Lakehouse Mirroring | Zero-ETL mirroring to Fabric/OneLake | Real-time analytics without ETL overhead |
| PolyBase & External Data | Better reliability, Parquet & Iceberg support, Managed Identity for external sources | Easier integration with data lakes and hybrid architectures |
| Edition & Licensing | Resource Governor in Standard, higher limits, 50 GB Express, new Standard Developer Edition | Lower licensing cost and higher scalability |
Conclusion
SQL Server 2025 Upgrade Checklist
Pre-Upgrade Preparation
-
- Verify hardware and OS compatibility (Windows Server 2025 or supported Linux distributions).
- Update firmware, BIOS, NIC drivers, and storage drivers.
- Check .NET Framework and PowerShell versions (if required by tooling).
- Validate antivirus exclusions for SQL binaries, data/log, and tempdb.
Database & Instance Preparation
-
- Perform full backups of system + user databases.
- Run DBCC CHECKDB on all databases.
- Ensure no active corruption and no long-running transactions.
- Confirm free space: at least 2× size of the biggest database on the target drive.
- Export SQL Agent jobs, operators, alerts, and SSIS packages.
- Export Resource Governor and policy configurations (if used).
Performance & Compatibility Prep
-
- Record baseline: waits, CPU load, memory usage, top 20 queries, index stats.
- Enable Query Store on all databases before upgrade.
- Set databases temporarily to compatibility level 160 before upgrade (recommended).
- Validate unsupported features (e.g., deprecated syntax, removed components).
In-Place Upgrade / Migration
-
- Confirm all logins, certificates, and linked servers are scripted.
- Validate encryption keys and TDE certificates (mandatory for restore).
- If AGs exist, review read/write routing and failover policies.
- For Linux: confirm correct file permissions and mount points (tmpfs optional for tempdb).
Post-Upgrade Configuration
-
- Set all databases to compatibility level 170.
- Enable:
- Intelligent Query Processing (IQP)
- Optimized Locking
- ZSTD compression (optional)
- ADR (required for optimized locking)
- Query Store on secondaries (AG)
- TempDB Space Governance (Standard/Enterprise)
- Update statistics with FULLSCAN.
- Rebuild fragmented indexes.
- Review memory grant feedback and CE feedback DMVs.
Validation & Monitoring
- Monitor:
- dm_exec_query_stats
- dm_os_wait_stats
- dm_io_virtual_file_stats
- dm_exec_ce_feedback_cache
- Check for plan regressions in Query Store.
- Validate backup/restore performance with ZSTD and secondary backups.
- Enable new Extended Events sessions (especially for parameter sniffing and DOP feedback).
Optional: Cloud/Fabric Integration
-
- Configure backup to URL with Managed Identity.
- Test immutable backups for ransomware protection.
- Enable Fabric mirroring for real-time analytics (optional).
Good Context.