How to fix Error 5586 on Windows Server 2025 / Windows 11

Troubleshooting Guide: SQL Server Error 5586 — FILESTREAM Already Configured

Why This Error Happens

Error 5586 occurs when sp_configure 'filestream access level' or the SQL Server Configuration Manager attempts to set FILESTREAM to a level that is already active on the instance. This is typically a benign, informational error, but it can also surface when configuration changes are applied through mismatched channels—for example, setting the value via T-SQL while the registry or Configuration Manager still holds a different cached state. It may also appear if a previous configuration change was not fully committed due to a failed service restart or a permissions issue preventing the write-back to the Windows registry.

Step-by-Step Resolution Guide

Step 1: Verify the Current FILESTREAM Configuration Level

  • Open SQL Server Management Studio (SSMS) and run EXEC sp_configure 'filestream access level'; to check the current runvalue and configvalue.
  • Confirm whether the value matches what you are attempting to set (0 = Disabled, 1 = T-SQL only, 2 = T-SQL and Win32 streaming).
  • If the values already match your intended setting, no further action is required—this error is expected behavior, not a failure.

Step 2: Check SQL Server Configuration Manager Settings

  • Open SQL Server Configuration Manager (search for SQLServerManager17.msc on Windows Server 2025/Windows 11).
  • Navigate to SQL Server Services, right-click your instance (e.g., SQL Server (MSSQLSERVER)), and select Properties.
  • Go to the FILESTREAM tab and confirm the checkboxes (Enable FILESTREAM for Transact-SQL access, Enable for I/O streaming access) reflect the level you want.
  • If Configuration Manager shows a different state than sp_configure, this mismatch is the root cause—apply changes here first, then restart the SQL Server service.

Step 3: Synchronize Registry and Service State

  • Open regedit and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\Filestream.
  • Confirm the EnableLevel DWORD value matches the level set in Configuration Manager (0, 1, or 2).
  • If it does not match, manually correct the registry value (ensure you have a backup/export first), then restart the SQL Server (MSSQLSERVER) service via services.msc or net stop MSSQLSERVER && net start MSSQLSERVER.

Step 4: Reapply Configuration via T-SQL with RECONFIGURE

  • Run the following in SSMS as a sysadmin:
  EXEC sp_configure 'filestream access level', 2;
  RECONFIGURE;
  • If error 5586 persists, run RECONFIGURE WITH OVERRIDE; to force the engine to re-evaluate and reapply the setting.
  • Restart the SQL Server service afterward to ensure the change is fully committed.

Step 5: Validate Service Account Permissions

  • Ensure the SQL Server service account has Full Control on the FILESTREAM data folder path (e.g., F:\FILESTREAM_Data).
  • Check via icacls "F:\FILESTREAM_Data" in an elevated PowerShell/Command Prompt window.
  • Grant permissions if missing: icacls "F:\FILESTREAM_Data" /grant "NT SERVICE\MSSQLSERVER":(OI)(CI)F.

Alternative or Verification Steps

  • Run SELECT SERVERPROPERTY('FilestreamConfiguredLevel'), SERVERPROPERTY('FilestreamEffectiveLevel'); — both values should match your intended setting and confirm the change took effect.
  • If the issue persists after a service restart, drop and recreate the FILESTREAM filegroup on a test database to confirm the feature is functioning correctly at the engine level, independent of the configuration flag.