0X000002BD

Fix ERROR_RXACT_STATE_CREATED (0X000002BD) in Windows

Database Errors Intermediate 👁 1 views 📅 May 29, 2026

This error pops up during database transactions or app installs when a transaction is stuck in created state. Here's what causes it and how to fix it.

When This Error Shows Up

You'll see ERROR_RXACT_STATE_CREATED (0X000002BD) during database transactions—like when a SQL Server query fails mid-commit, or when an application installer (especially one using Windows Installer or MSI) can't finalize its setup. The real trigger is always the same: the Kernel Transaction Manager (KTM) has a transaction that's been created but never committed or rolled back. You'll get this error in system event logs or as a return code from functions like CommitTransactionAsync or RollbackTransaction.

What's Actually Happening Here

Windows uses KTM to manage transactions for things like registry changes, file operations, and database writes. When a transaction enters the "created" state, it means the system allocated resources—like log entries in the Common Log File System (CLFS)—but nothing else happened. The transaction is sitting there alive but incomplete. The error code 0X000002BD means you're trying to perform an operation on a transaction that's still in this uncommitted state. You can't commit it, you can't roll it back normally, and any new transaction fails because the KTM supervisor sees a dangling resource.

The most common cause is a crash during a transaction (like a power loss or a forced reboot). The transaction survives in the system's transaction table, but the application that started it is gone. SQL Server or an installer doesn't clean up after itself. Another trigger: a buggy driver that holds a transaction open indefinitely.

The Fix: Step by Step

Step 1: Identify the Stuck Transaction

Open an elevated PowerShell window (run as Administrator). Run this command to list all active transactions:

Get-WmiObject -Namespace root\default -Class __TransactionState

Look for entries where State equals 1 (created) or 2 (active). Note the TransactionId GUID—that's your target.

Step 2: Force-Kill the Transaction

You can't rely on standard APIs here. Use ktmutil, the kernel transaction manager utility. Run:

ktmutil list tm

This shows transaction manager (TM) objects. Find the one tied to your error (likely the default TM). Then force rollback the stuck transaction:

ktmutil rollback {TransactionId}

Replace {TransactionId} with the GUID from Step 1. If ktmutil refuses (says access denied or invalid handle), move to Step 3.

Step 3: Clear KTM State via Registry (Last Resort)

Sometimes the transaction is so wedged that only a reboot and a registry tweak works. Here's the nuclear option:

  1. Open Registry Editor (regedit) as Administrator.
  2. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\KtmRm.
  3. Look for a subkey named Parameters—if it's missing, create it (right-click → New → Key).
  4. Inside Parameters, create a DWORD (32-bit) named ResetOnBoot and set its value to 1.
  5. Reboot your machine. During boot, the KTM will flush all uncommitted transactions.
  6. After boot, delete that ResetOnBoot value to prevent this from happening on every restart.

Step 4: Verify the Fix

After the reboot, run the PowerShell command from Step 1 again. You should see zero transactions in "created" state. Then retry your original operation—SQL query, installer, whatever—and it should proceed without the error.

What to Check If It Still Fails

If the error persists, the transaction isn't the real problem—something else is. Three things to check:

  • Driver issues: A buggy file system filter driver (like an antivirus tool or backup software) can hold transactions open. Disable non-Microsoft drivers temporarily using fltmc in an admin command prompt: fltmc unload <driver_name>. Re-enable after testing.
  • CLFS corruption: Common Log File System logs can get corrupted. Run chkdsk /f on your system drive and reboot. Let chkdsk fix the filesystem—it often repairs CLFS entries that KTM depends on.
  • SQL Server-specific: If this happens during SQL Server operations, check the SQL error log for state=2 or state=3 messages related to distributed transactions. You might need to restart the MSDTC service: net stop msdtc followed by net start msdtc.

If nothing works, consider a system restore point from before the first occurrence. That's rare but sometimes the KTM kernel itself gets patched weirdly.

Was this solution helpful?