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.mscon 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
regeditand navigate toHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\Filestream. - Confirm the
EnableLevelDWORD 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.mscornet 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.