When an Exchange backup fails, the product's message usually hides a Volume Shadow Copy Service (VSS) code such as 0x800423F3 or a writer stuck in a failed state. This quick reference covers 30 of them: the VSS HRESULTs, the writer states and last errors that vssadmin list writers shows, and the Exchange and Windows events that go with them, each with the usual cause on Exchange Server SE, 2019 and 2016 and the first check. Press Ctrl+F and type your code.
Codes in this quick reference
0x800423F3 VSS_E_WRITERERROR_RETRYABLE: the writer hit a transient error; a retry may succeedvssadmin / BETEST / backup job log0x800423F4 VSS_E_WRITERERROR_NONRETRYABLE: the writer hit an error that will probably recur on retryvssadmin / backup job log0x800423F2 VSS_E_WRITERERROR_TIMEOUT: the writer timed out between the Freeze and Thaw eventsvssadmin / backup job log0x800423F1 VSS_E_WRITERERROR_OUTOFRESOURCES: the writer ran out of memory or other system resourcesvssadmin / backup job log0x80042306 VSS_E_PROVIDER_VETO: expected provider error; the provider logged the reason in the event logBackup job log / Application log0x8004230F VSS_E_UNEXPECTED_PROVIDER_ERROR: the provider returned an error code VSS didn't expectBackup job log / Application log (VSS)0x8004230E VSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER: the chosen provider doesn't support this volumeBackup job log0x80042312 VSS_E_MAXIMUM_NUMBER_OF_VOLUMES_REACHED: too many volumes in one shadow copy set (64 maximum)Backup job log
+ 22 more codes in the tables below.
How to read these codes#
Exchange Server supports only Exchange-aware, VSS-based backups. The backup product (the requester) asks VSS for a snapshot, the Microsoft Exchange Writer, hosted by the Microsoft Exchange Replication service (MSExchangeRepl), prepares the databases, and a provider takes the snapshot. A failure in any of the three becomes an HRESULT:
- 0x800423F1 to 0x800423F4: writer errors: a writer (on an Exchange server, usually the Microsoft Exchange Writer) failed.
- Other 0x800423xx codes: VSS and provider errors.
- Negative codes such as -2402: the database engine, covered in the ESE error codes quick reference.
You'll find them in the backup job log, in vssadmin list writers (State and Last error), in Microsoft's BETEST tool (Status for writer Microsoft Exchange Writer: STABLE (0x800423f3 - VSS_E_WRITERERROR_RETRYABLE)) and in the Application log under the VSS, MSExchangeRepl and ESE sources. Some products print the Windows message text instead, such as The writer experienced a non-transient error. If the backup process is retried, the error is likely to reoccur. (0x800423F4); some log the code in decimal. Product-specific messages are in the guides for Veeam (and Veeam Explorer restores), Backup Exec and NetBackup and Commvault.
# Elevated prompt on the server that runs the backup (in a DAG, the passive copy's server)
vssadmin list writers | Select-String 'Microsoft Exchange Writer' -Context 0,4
vssadmin list providers
vssadmin list shadowstorage
'{0:X8}' -f 2155348129 # 807800A1 (decimal code from a log)
'{0:X8}' -f -2147212301 # 800423F3 (negative decimal)A healthy writer looks like this before and after every job:
Writer name: 'Microsoft Exchange Writer'
Writer Id: {...}
Writer Instance Id: {...}
State: [1] Stable
Last error: No errorWriter errors#
Check in vssadmin which writer failed before blaming Exchange. A writer also vetoes a snapshot set that lacks a volume it needs, so always back up each database together with its log volume. Microsoft's GetWriterStatus reference describes these four errors by name only. The hex values are the ones tools print: Microsoft's own pages show 0x800423f3 in BETEST output and 0x800423F4 in a Windows Server Backup failure, and 0x800423F1 and 0x800423F2 are shown as backup products report them.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x800423F3VSS_E_WRITERERROR_RETRYABLE | The writer hit a transient error; a retry may succeed | DAG passive-copy backup losing its RPC channel to the active server (network devices, security software), active and passive copies backed up at once, or a database moved mid-job | MSExchangeRepl event 2153; KeepAliveTime and QueryLogRangeTimeoutInMsec (below); job schedules. Guide |
0x800423F4VSS_E_WRITERERROR_NONRETRYABLE | The writer hit an error that will probably recur on retry | A persistent problem with a selected database or the writer; Microsoft describes it as an error that may recur on the next shadow copy | MSExchangeRepl and ESE errors at job time; copy health; restart MSExchangeRepl in a quiet period and retest. Guide |
0x800423F2VSS_E_WRITERERROR_TIMEOUT | The writer timed out between the Freeze and Thaw events | The snapshot took too long: busy or slow storage, heavy I/O during the job, a slow provider | Storage latency; move the job out of busy hours; Microsoft: wait ten minutes and retry, up to three times. Guide |
0x800423F1VSS_E_WRITERERROR_OUTOFRESOURCES | The writer ran out of memory or other system resources | Memory pressure on the server, or other heavy jobs running | Memory use of MSExchangeRepl and the server; reduce load; Microsoft: wait ten minutes and retry, up to three times |
For retryable errors on passive-copy backups, Microsoft's guidance is to keep KeepAliveTime on the Exchange servers below the idle-session timeout of network devices (and above 15 minutes), back up passive copies rather than active ones, never back up both at once, avoid moving databases during the job and, for busy servers, raise the log-range query timeout from its 30-second default for better tolerance of network or performance problems:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Replay\Parameters' -Name QueryLogRangeTimeoutInMsec -PropertyType DWord -Value 120000
Restart-Service MSExchangeRepl # in a quiet periodProvider and snapshot codes#
These come from VSS or the provider. Hex values are as listed in Microsoft's AddToSnapshotSet reference, except 0x80042318 and 0x80042319, which Microsoft's pages name without a value (shown here as backup products report them). The remaining codes are listed by name only.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
0x80042306VSS_E_PROVIDER_VETO | Expected provider error; the provider logged the reason in the event log | A hardware or third-party provider failing, or one left behind by a removed product | The provider's own Application log event; vssadmin list providers; Microsoft: wait ten minutes, retry up to three times |
0x8004230FVSS_E_UNEXPECTED_PROVIDER_ERROR | The provider returned an error code VSS didn't expect | A provider bug or conflict | VSS and provider errors in the Application log at job time; update or remove the provider; retry as for 0x80042306 |
0x8004230EVSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER | The chosen provider doesn't support this volume | A job forced to use a hardware provider for a volume on other storage | Provider setting in the job; vssadmin list providers |
0x80042312VSS_E_MAXIMUM_NUMBER_OF_VOLUMES_REACHED | Too many volumes in one shadow copy set (64 maximum) | Many database and log volumes or mount points in a single job | Split the job, keeping each database with its log volume |
0x80042316VSS_E_SNAPSHOT_SET_IN_PROGRESS | Another shadow copy creation is already in progress | Overlapping jobs: two products, host- and guest-level backups, or two jobs on one server | Schedules: VSS allows one shadow copy set creation at a time |
0x80042317VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED | The volume is already in the maximum number of shadow copy sets | Shadow copies left behind by failed jobs | vssadmin list shadows; delete stale copies you don't need |
0x80042318VSS_E_WRITER_INFRASTRUCTURE | VSS couldn't contact the writers | COM+ Event System or Volume Shadow Copy service not running, or broken registrations | Both services running; vssadmin list writers must list writers |
0x80042319VSS_E_WRITER_NOT_RESPONDING | A writer didn't answer the status request: it ended or is stuck | MSExchangeRepl hung, crashed or restarted during the job | MSExchangeRepl state and Application log; restart it in a quiet period |
VSS_E_INSUFFICIENT_STORAGE | Not enough storage space for the shadow copy | Shadow copy storage too small, or the volume nearly full | vssadmin list shadowstorage; free space or resize; delete old shadow copies |
VSS_E_FLUSH_WRITES_TIMEOUTVSS_E_HOLD_WRITES_TIMEOUT | The system couldn't flush or hold I/O writes for the snapshot | Heavy disk activity at snapshot time | Microsoft: wait ten minutes and retry, up to three times; then move the job to a quieter window |
VSS_E_UNEXPECTED | Unexpected VSS error; the code is written to the error log | Varies: read the logged code | VSS errors in the Application log at job time |
0x80042301VSS_E_BAD_STATE | Calls made out of order: the requester skipped initialization or prerequisite steps | A backup agent problem rather than Exchange | Update the backup agent; rerun the job |
VSS_E_REBOOT_REQUIRED | The provider hit an error that needs a restart | A provider condition that only a restart clears | Restart in a maintenance window (DAG maintenance mode) |
VSS_E_TRANSACTION_FREEZE_TIMEOUTVSS_E_TRANSACTION_THAW_TIMEOUT | VSS couldn't freeze or thaw the DTC or the Kernel Transaction Manager | Distributed Transaction Coordinator problems | MSDTC service state and its events |
0x80070005E_ACCESSDENIED | The caller lacks backup privileges or isn't an administrator | The backup service account's rights on the Exchange server | Local Administrators or Backup Operators membership; the product's documented Exchange permissions |
Writer states and last errors in vssadmin#
vssadmin list writers prints the state number in brackets. The numbers come from Microsoft's VSS_WRITER_STATE enumeration: 6 to 15 are failure states and all display as Failed, so the number tells you which phase failed.
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
State: [1] Stable | Idle and ready; Last error can still show the previous failure | Microsoft's own example shows Stable with Retryable error | Read Last error before retrying |
State: [5] Waiting for completionVSS_WS_WAITING_FOR_BACKUP_COMPLETE | Snapshot taken; the backup hasn't signalled completion | A job still running, or one that crashed or was cancelled; logs aren't truncated | Job status; if nothing runs, restart MSExchangeRepl in a quiet period. Guide |
State: [7] FailedVSS_WS_FAILED_AT_PREPARE_BACKUP | The writer failed while preparing the backup | The writer rejected the backup request; MSExchangeRepl logs why | MSExchangeRepl events; Get-MailboxDatabaseCopyStatus |
State: [8] FailedVSS_WS_FAILED_AT_PREPARE_SNAPSHOT | The writer failed while preparing the snapshot | Read with Last error | MSExchangeRepl and ESE events at job time |
State: [9] FailedVSS_WS_FAILED_AT_FREEZE | The writer failed at freeze | Often paired with Timed out: the freeze lasted too long | Storage latency and job timing |
State: [12] FailedVSS_WS_FAILED_AT_BACKUP_COMPLETE | The writer failed at backup completion | Completion is when Exchange truncates logs, so logs keep growing | Application log; logs not truncating |
Last error: Retryable error | Same as 0x800423F3 | See 0x800423F3 | See 0x800423F3 |
Last error: Non-retryable error | Same as 0x800423F4 | See 0x800423F4 | See 0x800423F4 |
Last error: Timed out | Same as 0x800423F2 | See 0x800423F2 | See 0x800423F2 |
Exchange and Windows backup events#
| Code | Meaning | Usual cause | First check |
|---|---|---|---|
Event ID 2153MSExchangeRepl | The log copier was unable to communicate with server: the passive copy is disconnected from the active server | Network or security software interrupting the RPC channel a passive-copy backup needs | Network path; KeepAliveTime below device idle timeouts; QueryLogRangeTimeoutInMsec |
Event ID 521Microsoft-Windows-Backup | failed as Volume Shadow copy operation failed for backup volumes with following error code '2155348129': the code is decimal (0x807800A1) | A writer failed; in Microsoft's example (the SQL Server VSS writer) the backup also reports The volume shadow copy operation failed with error 0x800423F4 | vssadmin list writers; errors from the failing writer's source |
How to verify a fix#
- Writer:
State: [1] StableandLast error: No errorbefore the job, and again after it, not stuck at[5]. - Job: the backup completes without VSS warnings in its log.
- Exchange recorded it:
LastFullBackuporLastIncrementalBackupshows the new time. Copy and differential backups never truncate logs, by design. - Logs truncate: after a full or incremental backup the log count drops once every copy has replayed them; lagged copies keep theirs.
- Quiet event log: no new VSS, MSExchangeRepl or ESE errors in the job window.
- Control test: if the product still fails while a Windows Server Backup VSS full backup of the same volumes succeeds, look at the product's provider and settings.
Get-MailboxDatabase -Status | Format-Table Name,LastFullBackup,LastIncrementalBackup -AutoSize
Get-MailboxDatabaseCopyStatus * | Format-Table Name,Status,CopyQueueLength,ReplayQueueLength -AutoSize
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName=@('VSS','MSExchangeRepl','ESE'); Level=2; StartTime=(Get-Date).AddHours(-12)} |
Format-Table TimeCreated,ProviderName,Id -AutoSizeReferences#
- VSS_E_WRITERERROR_RETRYABLE error when backing up a passive database copy in an Exchange DAG (Microsoft Learn)
- IVssBackupComponents::DoSnapshotSet: VSS return codes and meanings (Microsoft Learn)
- IVssBackupComponents::AddToSnapshotSet: return codes with hex values (Microsoft Learn)
- IVssBackupComponents::GetWriterStatus: writer failure codes (Microsoft Learn)

