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-Transactionwith the same name - Custom code that calls
CreateTransactionwith a name passed as a parameter
How to fix it – step by step
- 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.
- 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)" - 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 - If you're using custom C++/C# code with
CreateTransaction, passNULLfor the name parameter. That avoids the conflict completely. - 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-Transactionin PowerShell to list active transactions. If you see one stuck, runUndo-TransactionorComplete-Transactionto 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.