0XC0190023

SQL Server Error 0xC0190023: Miniversion Invalidated Fix

This error means a file miniversion (a snapshot state) got invalidated. It's usually a corrupt database state after a crash or failed restore.

Cause #1: Database Corruption After Unexpected Shutdown

This is by far the most common trigger. I've seen it dozens of times — a server loses power, someone yanks the power cord, or SQL Server crashes hard during a checkpoint. The next time you try to access that database or restore a log backup, you get 0xC0190023. The transaction log has a miniversion (a kind of checkpoint state) that the engine marked as invalid because the write didn't complete cleanly.

First thing: don't panic. In most cases, the database is salvageable. But you need to act fast and in the right order.

Step 1: Check current database state

SELECT state_desc FROM sys.databases WHERE name = 'YourDatabaseName';

If it shows RECOVERY_PENDING or SUSPECT, you've got a real problem. If it's ONLINE but the error still pops, the corruption is probably in a specific page or file group.

Step 2: Run DBCC CHECKDB with repair options

Don't skip this. Run CHECKDB first to see the extent of the damage. I had a client last month whose entire payroll database went suspect after a UPS failure — CHECKDB found 12 corrupt pages, but a simple repair brought it back online. Here's the command:

ALTER DATABASE YourDatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS);
GO
ALTER DATABASE YourDatabaseName SET MULTI_USER;

Warning: This can lose data — usually a few rows or pages. That's better than losing the whole database. If you can't afford any data loss, skip this and go straight to restore.

Step 3: If repair fails, restore from backup

And this is why you test your backups. If CHECKDB can't fix it, you need a clean backup. Restore the latest full backup, then apply all transaction log backups except the one that's throwing the error. That log backup is toast. Skip it and apply the rest. Example:

RESTORE DATABASE YourDatabaseName FROM DISK = 'C:\Backups\Full.bak' WITH NORECOVERY;
RESTORE LOG YourDatabaseName FROM DISK = 'C:\Backups\Log1.trn' WITH NORECOVERY;
-- Skip the corrupted log backup (Log2.trn)
RESTORE LOG YourDatabaseName FROM DISK = 'C:\Backups\Log3.trn' WITH RECOVERY;

You'll lose whatever transactions were in that skipped log backup — but you keep everything else. Better than a full database restore from last night.

Cause #2: VSS (Volume Shadow Copy) Snapshot Corruption

Less common but still a regular occurrence. SQL Server relies on VSS for backups or snapshots. If the VSS writer crashes or the snapshot gets invalidated (e.g., disk full, or another backup job interferes), you get this error when you try to mount or use the snapshot. I've seen this on Windows Server 2016 running SQL Server 2014 with a third-party backup tool that wasn't handling VSS properly.

Symptoms: error appears when you try to query a database from a VSS snapshot mount point, not the live database. The fix is straightforward — don't use that snapshot anymore.

Step 1: Delete the corrupted snapshot

Open a command prompt as admin and run:

vssadmin delete shadows /for=C: /oldest

Replace C: with the drive holding the database files. This removes the oldest snapshot. Repeat until all snapshots are gone if the error persists.

Step 2: Recreate the snapshot

If you're using SQL Server's native VSS backup, just rerun the backup job. If it's a manual snapshot for a read-only copy, recreate it:

BACKUP DATABASE YourDatabaseName TO DISK = 'C:\Backups\YourDatabaseName.bak';

Then restore with WITH SNAPSHOT if you need read-only access. But honestly, I've stopped relying on VSS for anything critical — too flaky. Use native SQL Server backups.

Cause #3: Third-Party Backup Tool Interference

I've seen this with tools like Redgate SQL Backup, Idera, or even old-school Symantec Backup Exec. These tools create miniversions internally. If the tool crashes mid-backup, or if two backup jobs conflict (e.g., a differential backup starts while a full backup is still writing), you get miniversion invalidation. The error shows up when you try to use that backup file or restore from it.

Step 1: Check the backup tool's logs

Most tools log the exact file and time of failure. Look for messages about "miniversion mismatch" or "snapshot conflict".

Step 2: Delete the bad backup file

If the error is tied to a specific backup file (like a .bak file), just delete it. Don't try to repair it — it's garbage. Create a fresh backup with no overlapping jobs.

Step 3: Prevent conflicts

Schedule backups so they don't overlap. I had a client whose nightly backup job ran at 10 PM, and their maintenance plan also ran DBCC CHECKDB at 10:15 PM — that overlap killed their backup integrity. Separate these by at least 30 minutes.

Quick-Reference Summary Table

CauseSymptomFix
Unexpected shutdown / crash corruptionDatabase offline or suspect after crashDBCC CHECKDB with repair, or restore skipping bad log backup
VSS snapshot corruptionError when querying snapshot mountDelete snapshot with vssadmin, recreate
Third-party backup tool conflictError on backup file or restore attemptDelete bad backup file, reschedule to avoid overlap
Related Errors in Database Errors
0X00001A3B Fix ERROR_TRANSACTION_NOT_FOUND (0x00001A3B) in Windows 0X000008B3 Fix NERR_ACFNotLoaded 0X000008B3: Security database not started 0X8004D01E XACT_E_REENLISTTIMEOUT: Fix the 0X8004D01E Timeout Error FATAL: password authentication failed for user Fix PostgreSQL FATAL password authentication failed

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.