Troubleshooting Guide: SQL Server Error 3879 — Tiered Memory for Buffer Pool Started with Memory-Optimized Metadata
Why This Error Happens
This informational error occurs when SQL Server 2025 initializes the buffer pool using tiered memory (PMEM/Storage Class Memory combined with DRAM) while memory-optimized metadata is also enabled for system tables. The conflict typically arises because the tiered memory feature and memory-optimized tempdb metadata were both configured without validating hardware compatibility or NUMA node alignment. In most cases, this is triggered by a misconfigured -pmem startup parameter or outdated storage drivers that don’t correctly report persistent memory capacity to the Database Engine.
Step-by-Step Resolution Guide
Step 1: Verify Persistent Memory Hardware and Driver Configuration
- Open PowerShell as Administrator and run
Get-PmemDiskto confirm the persistent memory devices are recognized by Windows Server 2025. - Check Device Manager for outdated or missing NVDIMM/PMEM drivers and update them via Windows Update or OEM vendor packages.
- Confirm BIOS/UEFI settings have App Direct Mode enabled for persistent memory rather than Memory Mode.
Step 2: Review SQL Server Startup Parameters
- Open SQL Server Configuration Manager and navigate to SQL Server Services > right-click your instance > Properties > Startup Parameters.
- Check for the presence of
-pmemand ensure the path points to a valid, mounted persistent memory volume (e.g.,-pmem=R:\PMemStore). - Remove or correct any invalid tiered memory path and restart the SQL Server service.
Step 3: Disable Conflicting Memory-Optimized Metadata Temporarily
- Run the following T-SQL to check current configuration:
SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'MEMORYCLERK_TIERED_MEMORY';
- If tiered memory is incompatible with current metadata settings, disable memory-optimized tempdb metadata:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED TEMPDB_METADATA = OFF;
- Restart the SQL Server service for changes to take effect.
Step 4: Rebuild Tiered Memory Buffer Pool Extension
- Navigate to
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA\. - Delete or rename any orphaned
.bpe(Buffer Pool Extension) files that may reference stale tiered memory paths. - Reconfigure the buffer pool extension using:
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION ON (FILENAME = 'R:\PMemStore\BPE.bpe', SIZE = 50GB);
Step 5: Apply Latest Cumulative Update
- Download and install the latest SQL Server 2025 Cumulative Update (CU) from the Microsoft Update Catalog.
- Run the installer with elevated privileges and select Repair if prompted for an existing instance.
- Reboot Windows Server 2025 to finalize kernel-level memory driver changes.
Alternative or Verification Steps
- After restarting the SQL Server service, check the SQL Server Error Log (
ERRORLOGin theMSSQL\LOGdirectory) to confirm Error 3879 no longer appears during startup. - If the issue persists, run
DBCC CHECKDBandsys.dm_os_sys_infoto verify memory allocation is stable, or consider disabling tiered memory entirely via-pmemremoval as a fallback until hardware compatibility is fully validated.