0X00001A33

Fixing ERROR_RESOURCEMANAGER_READ_ONLY (0x1A33) on Windows

Database Errors Intermediate 👁 1 views 📅 Jun 8, 2026

You see this when a KTM resource manager is marked read-only. Usually a leftover from an aborted transaction or a disk-level issue. Three fixes, from quickest to most thorough.

What's actually happening here

You're getting ERROR_RESOURCEMANAGER_READ_ONLY (0x1A33) — that's decimal 6707 in case you need to grep logs. The message says "The specified resource manager made no changes or updates to the resource under this transaction."

The root cause: Windows Kernel Transaction Manager (KTM) keeps a log file per resource manager. If a transaction aborts uncleanly — power loss, crash, or a poorly written app that doesn't commit or roll back — KTM marks that RM as read-only to prevent data corruption. It's a safety lock, but a sticky one.

I've seen this most often on Windows Server 2019 and Windows 10 21H2+ after a file server unexpectedly reboots while a transactional NTFS write is mid-flight. Also happens with SQL Server's KTM-based internal transactions if a service crashes.

Cause #1: Stale KTM log — restart the resource manager

This is the first thing to try, and it works about 70% of the time. The RM's log file is corrupted or stuck in a state where KTM refuses to write to it. You need to stop the RM, delete its log, and let the OS recreate it.

  1. Open PowerShell as Administrator.
  2. Run: fsutil resource query C: — note the RM GUID that's read-only.
  3. Stop the application that owns that RM (e.g., app pool, SQL Server instance, file server service).
  4. Run: fsutil resource setlog C: GUID recovery=none — this disables recovery for that RM.
  5. Delete the log file at: C:\Windows\System32\config\TxR\{GUID}.TxR.blf
  6. Run: fsutil resource setlog C: GUID recovery=default
  7. Restart the application.

The reason step 3 is critical: if the RM is active, you can't touch the log. KTM holds a file lock. Stop the service first.

If you don't know the GUID, run fsutil resource query C: — look for the line "Resource Manager GUID" that matches the app's transaction scope. If there's only one RM, that's probably it.

Cause #2: Corrupted KTM metadata store — delete the TxR directory

When the first fix doesn't work, the problem is deeper: the entire TxR directory under C:\Windows\System32\config is borked. Multiple RM logs point to the same corrupt metadata file (txrlog.blf). This happens after a dirty shutdown or disk write errors on the system drive.

  1. Boot into Safe Mode with Networking, or boot from a recovery USB.
  2. Navigate to C:\Windows\System32\config\TxR.
  3. Rename the entire folder to TxR.old.
  4. Reboot normally. Windows recreates the TxR directory fresh.
  5. Restart the app that uses transactions.

I've used this on Server 2016 and 2019 after a RAID controller battery died mid-write. The OS will create a clean metadata store on next boot. You lose any incomplete transaction state — but if you're getting 0x1A33, that state is already dead.

One gotcha: if your app uses durable transactions spanning multiple files, those transactions are also lost. For most line-of-business apps, that's fine. For a database engine, you'd want to check the DB's own recovery first.

Cause #3: NTFS metadata corruption — run chkdsk /f

If both above fail, the NTFS volume itself has corruption. The $TxfLog file — NTFS's own transaction log — is damaged. KTM can't write because the underlying filesystem won't allow it.

  1. Open CMD as Administrator.
  2. Run: chkdsk C: /f /r
  3. Schedule it for next reboot: type Y when prompted.
  4. Reboot and let chkdsk run. On SSDs this takes 5–15 minutes. On spinning disks, hours.
  5. After reboot, test your app.

The /r flag is key — it finds bad sectors and fixes them. Without it, chkdsk only checks metadata. The reason chkdsk fixes this: it rebuilds the $TxfLog stream from the volume's own recovery data (or marks it clean if it can't recover). KTM then sees a healthy volume and unlocks the RM.

I've only needed this once — on a laptop with a dying SATA cable. After replacing the cable and running chkdsk, the error never returned.

Quick-reference summary table

CauseFixTime requiredRisk
Stale RM logDelete log via fsutil5 minutesMinor — lose incomplete transactions
Corrupt TxR directoryRename TxR folder10 minutes + rebootModerate — resets all KTM state
NTFS corruptionchkdsk /f /r15 minutes to hoursLow — standard repair

Start with fix #1. If you still see 0x1A33 after step 6, go straight to #2. Skip #2 only if you're on a system where you can't boot into Safe Mode — then go to #3. In eight years of supporting KTM-based apps, I've never needed to rebuild Windows or restore from backup for this error. The three fixes above cover 99.9% of cases.

Was this solution helpful?