When This Error Pops Up
You'll see STATUS_LOG_PINNED_ARCHIVE_TAIL (0xC01A0018) when Windows can't truncate transaction logs. I've run into this most often on Exchange servers (2010, 2013, 2016) and SQL Server instances (2008 through 2019). It also hits Active Directory databases and any app using the Common Log File System (CLFS). The exact trigger is almost always a backup job that started but never finished — maybe someone kicked off a manual backup and closed the window, or a VSS writer timed out during a snapshot. The error message shows up in the Application event log with source like ESE (Extensible Storage Engine) or Ntfs, often with event ID 2046 or 2036.
Why It Happens
The log file system has this safety lock: it won't delete old log records until a backup confirms they've been archived. That archive tail pointer is set by the backup software. If a backup crashes, that pointer never moves forward. The log grows and grows until it hits the disk limit, then you get error 0xC01A0018. The culprit here is almost always one of three things: a stuck VSS snapshot, a failed backup agent that didn't release the log handle, or a manual backup that was canceled mid-stream. Don't bother restarting the server — that rarely helps because the archive tail is persisted in the log file itself.
How to Fix It
- Kill the stuck backup
Open a Command Prompt as admin. Runvssadmin list writersand look for any writers with a state of "Failed" or "Stable" but no snapshot in progress. Then runvssadmin list shadowsto see all Volume Shadow Copies. If you see an old one (older than the time you last had a successful backup), delete it with:
A quicker method for Exchange: runvssadmin delete shadows /shadow={shadow_copy_id}Get-VSSBackupConfiguration -Database "YourDatabaseName"in Exchange Management Shell to see what's holding the tail. - Force log truncation
For Exchange databases, run:
Check the "Current log number". If it's way higher than the "Last log backed up", your backup chain is broken. Run a full backup again using Windows Server Backup or your third-party tool (Veeam, DPM, etc.). After a successful full backup, logs will truncate automatically.ntdsutil
activate instance ntds
files
info - Clear the VSS snapshot set
Ifvssadmin delete shadowsdoesn't work, use disk shadow. Open an admin PowerShell and run:
This nukes all snapshots. Aggressive, but effective. Make sure no critical apps are mid-backup first.Get-WmiObject -Class Win32_ShadowCopy | Remove-WmiObject - Manually move the archive tail
For CLFS logs (like those in C:\Windows\System32\winevt\Logs or custom apps), you can manually advance the tail. Usewevtutilto clear the event log if that's the culprit:
Or for a specific custom log, identify the log file and rename it (while the service is stopped), then restart the service. This forces it to create a new file.wevtutil cl Application
If It Still Fails
Check the Application event log for events from source VSS or BackupExec (Symantec). Those often leave dangling handles. Also run esentutl /g on the affected database to verify it's not corrupt — corruption can also pin the log tail. As a last resort, you can set a registry key to force truncation on next mount — but I don't recommend it for production systems because it skips the archive check. Instead, restore from a good backup and replay the logs.