0XC0190001

STATUS_TRANSACTIONAL_CONFLICT (0XC0190001) – Name already used by another transaction

This error pops up when two transactions try to use the same resource name at the same time. The fix is to rename or scope the transactions properly.

What triggers this error

You're running a script that uses Kernel Transaction Manager (KTM) or Transacted File System (TxF) – maybe copying files with transactional rollback, or using PowerShell's Start-Transaction. Then boom: STATUS_TRANSACTIONAL_CONFLICT (0XC0190001). The message says: "The function attempted to use a name that is reserved for use by another transaction."

Had a client last month whose backup script kept failing. They were running two instances of the same PowerShell transaction in parallel, both trying to use the same transaction name MyBackupTrans. Windows said no – you can't share that name across concurrent transactions.

Root cause – plain English

Every transaction in KTM can have a friendly name (a "name" resource). If two transactions try to use the exact same name at the same time, the OS blocks the second one. It's like two people trying to claim the same parking spot. The name is reserved while the first transaction is active.

This usually happens in two places:

  • PowerShell scripts using Start-Transaction with the same name
  • Custom code that calls CreateTransaction with a name passed as a parameter

How to fix it – step by step

  1. Stop all running transaction instances. Open Task Manager and kill any PowerShell or process that's stuck in a transaction. Otherwise the name stays locked.
  2. Rename each transaction to be unique. In PowerShell, instead of Start-Transaction -Name "Backup", use a unique name per run:
    Start-Transaction -Name "Backup_$([DateTime]::Now.Ticks)"
  3. Or skip naming entirely. If you don't need a name, don't use one. PowerShell's default creates an anonymous transaction – no conflict:
    Start-Transaction
  4. If you're using custom C++/C# code with CreateTransaction, pass NULL for the name parameter. That avoids the conflict completely.
  5. Check your transaction scoping. Are you reusing a transaction across threads or async tasks? Each thread needs its own transaction object. Shared transaction objects are a recipe for this error.

Still failing? Check these

  • Is there a leftover transaction in the system? Use Get-Transaction in PowerShell to list active transactions. If you see one stuck, run Undo-Transaction or Complete-Transaction to clear it.
  • Are you using TxF on a network share? TxF doesn't work over SMB. Move the transaction to local storage.
  • Check your antivirus. Some AVs lock files during scans, which can conflict with transaction names. Temporarily disable AV to test.
  • Windows 10/11 version matters. TxF is deprecated in Windows 10 version 1903 and later. If you're on newer builds, the error might be a compatibility issue. Consider using Volume Shadow Copy instead.

One more real-world scenario

Had a SysAdmin running a SQL Server job that used Transactional SQL (BEGIN TRAN) alongside a PowerShell script using Start-Transaction. Both used the same name "SyncData". The fix: give the SQL transaction a different name, or remove the name from PowerShell. Took him 2 hours to find – now you know in 2 minutes.

Bottom line: don't reuse transaction names. Unique or anonymous is the way to go.

Related Errors in Database Errors
0X000010D9 0X000010D9: Database Read/Write Failure Fix 0X80190042 Fix 0X80190042: Transaction Scope Callbacks Not Set SQL Server 'Database in Restoring' state Why Your SQL Server Keeps Throwing 'Database in Restoring' State 0XC0190014 Fix STATUS_TRANSACTION_NOT_REQUESTED (0XC0190014) in SQL Server

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.