SharePoint Server: Setup, Policies, and Admin Configuration Guide 2026
Why SharePoint Server Configuration Goes Wrong
If you're reading this, something is broken , or you're trying very hard to make sure it doesn't break. Either way, I've got you. I've spent years inside SharePoint Server farms ranging from a single-server sandbox to multi-datacenter Subscription Edition deployments, and I'll tell you the honest truth: SharePoint Server is one of the most powerful collaboration platforms Microsoft has ever built, and also one of the most unforgiving to configure incorrectly.
The platform spans four actively supported versions, SharePoint Server Subscription Edition, 2019, 2016, and 2013, each with its own hardware requirements, upgrade paths, and update packaging model. Most of the pain I see in enterprise environments comes from three root causes.
First, mismatched update states across farm servers. SharePoint farms are multi-server beasts. If one server gets the March 2026 cumulative update (KB 5002843, version 16.0.19725.20076) and another is still sitting at the October 2025 build, the Configuration Wizard will refuse to complete and Central Administration will throw cryptic database schema errors. The farm thinks it's in a broken state, because it is.
Second, the pre-March 2023 dual-update confusion. Before Microsoft changed its packaging model with the Version 23H1 release, you had to install two separate updates: the language-independent STS update and the language-dependent WSSLOC update. Admins who skipped the WSSLOC package ended up with farms that were partially updated, English UI worked fine, but language pack installations broke in subtle ways that only surfaced weeks later during a failover test.
Third, farm configuration steps done out of order. Running the SharePoint Products Configuration Wizard before all servers in the farm have the same patch level, or skipping the post-update timer job execution, produces errors that look like hardware failures but are really just sequencing problems.
Microsoft's error messages in these scenarios are legendarily unhelpful. You'll see things like "An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown" with a stack trace that points at internal framework code, not at the actual thing you did wrong. That's what this guide is for.
The Quick Fix, Try This First
Before you go deep, run this PowerShell command on every server in your SharePoint farm. It will tell you the current patch level of each server and flag any version mismatches immediately. Open the SharePoint Management Shell as Administrator and run:
(Get-SPFarm).BuildVersion
Get-SPServer | Select-Object Name, NeedsUpgrade
If any server shows NeedsUpgrade : True, that's your smoking gun. The farm database schema is ahead of the binaries on that server, which means the Configuration Wizard needs to run there, or you haven't yet installed the latest cumulative update on that machine.
The fastest path to resolution for most SharePoint Server Subscription Edition farms in 2026 is to install the current cumulative update (KB 5002843, released March 10, 2026, build 16.0.19725.20076), run the SharePoint Products Configuration Wizard on all servers in the correct order (database server first, then application servers, then web front ends), and then force the upgrade timer job to complete:
$farm = Get-SPFarm
$farm.BuildVersion
# Kick off the upgrade job manually if it's stalled
$upgradeJob = Get-SPTimerJob "job-database-schema-update"
$upgradeJob.RunNow()
Wait five minutes, then check Central Administration > Upgrade and Migration > Review Database Status. Every content database should show a green status. If it does, you're done.
If you're on SharePoint Server 2019, 2016, or 2013, the same core logic applies, check your version, get to the latest cumulative update for your version, and run the Config Wizard in the right sequence. The specific KB numbers differ by version, but the process is identical.
I've seen SharePoint Server installations fail at step one because someone skipped the hardware and software requirements check. Microsoft is very specific here, and those requirements differ by version. For SharePoint Server Subscription Edition, you need Windows Server 2019 or 2022, SQL Server 2019 or 2022, and specific .NET Framework versions installed before you even run Setup.exe.
Open a PowerShell window and check your OS build and .NET version first:
[System.Environment]::OSVersion.Version
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release
A release value of 533320 or higher means you have .NET Framework 4.8.1 installed, which Subscription Edition requires. Anything lower and the SharePoint prerequisite installer will fail, sometimes silently, sometimes with the misleading error "This product requires .NET Framework 3.5" even though the real issue is the 4.x version.
For SQL Server, verify that the SQL Server service account has the correct permissions. It needs dbcreator and securityadmin server roles in SQL Server to create and manage SharePoint configuration and content databases. Navigate to SQL Server Management Studio > Security > Logins, find your farm account, right-click > Properties > Server Roles, and confirm both are checked.
When the prerequisites are all satisfied, you'll get through the prerequisite installer without a single reboot loop, which is how you know you did it right.
This step trips up even experienced admins. SharePoint updates are cumulative, each monthly update contains every fix released before it, so you only ever need the most recent update to be fully patched. You do NOT need to install them in sequence.
For SharePoint Server Subscription Edition, the current update as of this writing is KB 5002843 (build 16.0.19725.20076, March 10, 2026). Microsoft changed its update packaging model in March 2023 with Version 23H1, there is now a single monthly update file instead of the old separate STS + WSSLOC pair. If you're patching a farm that's still on a build prior to 16.0.16130.20206 (March 2023), you need both the STS and the WSSLOC files. After that version, one file handles everything.
Download the update, then install it on every farm server using an elevated command prompt. Do not double-click the .exe, use the command line so you can capture the exit code:
ubersrv2016-kb5002843-fullfile-x64-glb.exe /passive /norestart
echo Exit code: %ERRORLEVEL%
Exit code 0 means success. Exit code 17022 means success but a reboot is required. Exit code 17025 means the update is already installed. Any other code means something went wrong, check %temp%\opatchinstall*.log for the full error detail.
Install the update on all servers before running the Configuration Wizard on any of them. This is the single most common sequencing mistake I see.
After every update installation, you must run the Configuration Wizard (PSConfig) on every server in the farm. The order matters. Run it on the server hosting the Central Administration site first, then work through the remaining application servers, and finally the web front ends.
For automated, scripted deployments, or when you're managing a large farm and don't want to click through the GUI, PSConfig.exe is your friend:
PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures -cmd secureresources -cmd services -install
Run this in the SharePoint Management Shell (or a regular elevated cmd window where PSConfig is in the path, typically C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\BIN).
Watch the output carefully. A successful run ends with "Configuration of SharePoint Products has succeeded." If it ends with "Configuration of SharePoint Products has failed", don't panic. Check the PSCDiagnostics log at:
C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\LOGS\
Sort by date modified and open the most recent PSCDiagnostics file. The failure reason is almost always on the last 20 lines. Common causes: SQL Server connectivity dropped, the farm account doesn't have enough SQL permissions, or a previous PSConfig run left a lock file behind at C:\Windows\System32\msiexec.exe (kill any lingering msiexec processes first).
A freshly built SharePoint Server farm needs its service accounts configured correctly before you enable any service applications. Using a single account for everything, the farm account, the application pool account, the search service account, is a security antipattern that Microsoft explicitly warns against, and I've personally watched it cause Kerberos authentication failures in three separate enterprise deployments.
The minimum you should define before going live:
- Farm account (SPFarm): runs the SharePoint Timer Service and Central Administration app pool. Should NOT be an interactive logon account.
- Web application app pool account: separate from the farm account, one per web application ideally.
- Search service account: used by the Search Service Application. Needs read access to all content sources.
- User Profile Synchronization account: if syncing with Active Directory, this account needs "Replicating Directory Changes" permission on the AD domain.
Register your managed accounts in Central Administration so SharePoint can automatically handle password rotation. Go to Central Administration > Security > Configure managed accounts, click Register Managed Account, and add each service account. Then in PowerShell:
Get-SPManagedAccount | Format-Table UserName, AutomaticChange, PasswordLastChanged
If AutomaticChange is False, SharePoint will not rotate the password, and the first time that AD password expires, every service running under that account will silently fail. Enable automatic change unless you have a specific reason not to.
Once the farm is patched and PSConfig has run successfully on all servers, do a full health check before you call the deployment done. Open Central Administration and navigate to Upgrade and Migration > Review Database Status. Every database should show status No action required. If any show Upgrade required, you have a server that didn't complete PSConfig, go back to that machine.
Next, run the built-in Health Analyzer. Go to Monitoring > Review problems and solutions. The analyzer will surface issues like app pools running under wrong accounts, missing timer job executions, and disk space warnings. Address anything marked Critical or Error before opening the farm to users.
For content database validation, use PowerShell to check each database's compatibility level and confirm no orphaned objects exist:
Get-SPContentDatabase | Select-Object Name, NeedsUpgrade, Status, DiskSizeRequired | Format-Table -AutoSize
Any database with NeedsUpgrade : True at this point means PSConfig didn't fully process it. You can target a specific database manually:
Upgrade-SPContentDatabase -Identity "WSS_Content_YourDB"
When every database returns NeedsUpgrade : False and the Health Analyzer shows no critical alerts, your farm is in a known-good state. Document the current build number and the date, this is your baseline for future troubleshooting.
Advanced Troubleshooting for SharePoint Server Admins
When the standard steps don't cut it, you need to go deeper. Here's what I reach for when a SharePoint Server farm is misbehaving and the obvious checks aren't showing anything.
Reading the ULS Logs the Right Way
SharePoint's Unified Logging Service (ULS) logs are verbose to the point of being overwhelming, but they're the single best diagnostic source on the platform. Every significant operation writes a correlation ID, a GUID you can use to filter the log to just the events from a specific failed request. When a user reports an error, ask them for the correlation ID shown on the error page (it's always displayed as a long hex string).
Then filter the ULS log on any farm server:
Merge-SPLogFile -Path "C:\Logs\filtered.log" -Correlation "your-correlation-id-here" -OverWrite
Open the resulting file in a text editor and search for entries with Unexpected or Exception in the Level column. That's where the real story is.
Windows Event Log IDs to Know
In Event Viewer, navigate to Windows Logs > Application and filter by Source = SharePoint Foundation. These are the event IDs that show up most often in broken farms:
- Event ID 6398: Timer job execution failure. Usually means a service account password expired or a dependent service is down.
- Event ID 5586: Unknown SQL Exception. Check SQL Server connectivity and disk space on the SQL data drives.
- Event ID 7043: User Profile Synchronization connection failure. Check the MSOL or AD connector account permissions.
- Event ID 8000: Application pool recycle. Frequent recycling usually points to memory pressure, check the IIS application pool memory limits in IIS Manager.
Group Policy Conflicts in Domain-Joined Farms
Enterprise environments often have Group Policy Objects that conflict with SharePoint's required configuration. The most common offenders are GPOs that enforce IE Enhanced Security Configuration (blocks Central Administration in browser), GPOs that restrict PowerShell execution policy (PSConfig relies on PowerShell), and GPOs that remove local administrator rights (needed during initial setup).
Run gpresult /h gpreport.html on the affected server, open the report, and look for policies applied under Computer Configuration > Windows Settings > Security Settings. Coordinate with your AD team to add the SharePoint service accounts and the SharePoint servers themselves to the appropriate exclusion groups before attempting another installation or upgrade.
SharePoint Server Upgrade Across Versions
If you're upgrading from SharePoint Server 2016 or 2019 to Subscription Edition, Microsoft's official guidance is a database-attach upgrade: you detach content databases from the old farm, mount them on the new farm, and run the upgrade. Do NOT attempt an in-place upgrade between major versions, that path was removed after 2013 and will leave your farm in a broken intermediate state.
Before any cross-version upgrade, run the pre-upgrade checker on the source farm:
stsadm -o preupgradecheck
This generates a report of all customizations, missing features, and compatibility issues you'll need to address before the databases can be successfully mounted on the new farm. Work through every warning in that report before you touch a single database file.