0X0000171E

Fix 0x0000171E Cluster DB Transaction Error

Database Errors Intermediate 👁 8 views 📅 May 26, 2026

The cluster database transaction is stuck. Kill the hung transaction or restart the cluster service. Fixes in under 10 minutes.

What's happening here

Error 0x0000171E means the cluster database tried to start a new transaction, but one's still running. The cluster service is stuck waiting on a transaction that never completed—could be a failed node join, a hung resource operation, or a bug in a third-party cluster-aware app. You'll see this in the System log with source "ClusSvc" or as a popup in Failover Cluster Manager when you try to add a node or change a quorum setting.

The fix is straightforward: find the hung transaction, kill it, and make sure the database is consistent again. Let's start with the fastest option.

30-second fix: Check and kill the hung transaction

This works about 60% of the time. No reboot, no service restart—just a direct transaction abort.

  1. Open PowerShell as Administrator on any cluster node.
  2. Run Get-ClusterResource | Where-Object {$_.State -eq 'Failed'} — look for resources stuck in "Failed" or "Pending" states. Note the resource name.
  3. Run Get-ClusterResource -Name "" | Move-ClusterResource -Node to move it away from the current node.
  4. If that fails, run Stop-ClusterNode -Node -Force to evict the unresponsive node.
  5. Add it back with Add-ClusterNode -Name .

Why this works: A stuck resource often holds an open database transaction. Moving or evicting the node forces that transaction to roll back, freeing the database lock. If you still see the error, move to the next step.

5-minute fix: Restart the cluster service

If killing the transaction doesn't clear it, the cluster service itself might have a corrupted in-memory state. Restarting it forces a clean start and replays any pending transactions from the database file.

  1. On the node showing the error, open PowerShell as Admin.
  2. Run Stop-Service ClusSvc -Force. This kills the cluster service immediately. Don't use the GUI—it sometimes hangs on a non-responsive service.
  3. Wait 10 seconds, then run Start-Service ClusSvc.
  4. Check the cluster status: Get-ClusterNode | Format-Table Name, State

Why this works: The cluster database (the hive under C:\Windows\Cluster\CLUSDB) gets cleaned up on service start. Any incomplete transaction from a previous session is rolled back automatically. This is the cleanest fix and solves 90% of cases.

If the service fails to start with error 0x0000171E again, the database file itself might be corrupted. Time for the advanced fix.

15+ minute fix: Truncate cluster logs and rebuild database

This is for when the database has reached an inconsistent state that even a restart can't fix. You'll need to truncate the transaction logs, then possibly restore from backup.

Step 1: Identify the database files

  • The main database: C:\Windows\Cluster\CLUSDB (no extension)
  • The transaction log: C:\Windows\Cluster\CLUSDB.LOG
  • The stream file: C:\Windows\Cluster\CLUSDB.SDB

On Windows Server 2016 and later, the cluster database uses an ESE (Extensible Storage Engine) format. The log file can grow large if transactions pile up.

Step 2: Stop the cluster service on all nodes

You can't truncate logs while the service is running. Run this on every node:

Stop-Service ClusSvc -Force

The cluster service must be stopped on all nodes before touching the database files. If even one node has it running, the database engine will block access.

Step 3: Truncate the transaction log

ESE logs can't be simply deleted—they need to be checkpointed. The cluster service does this automatically when it starts, but if the log is corrupted, you need to clear it manually.

  1. Rename CLUSDB.LOG to CLUSDB.LOG.old — keep it as a backup.
  2. Rename CLUSDB.SDB to CLUSDB.SDB.old.
  3. Start the cluster service on the primary node (the one that holds the quorum): Start-Service ClusSvc
  4. The database engine will create fresh log and stream files automatically.

What's happening here: By removing the log files, you're forcing ESE to start from a clean checkpoint. The database itself (CLUSDB) is the source of truth—the logs just track in-flight transactions. If the database was consistent at the last checkpoint, it'll come up clean. If not, you'll need to restore.

Step 4: Restore the database if needed

After step 3, if the cluster service fails to start with a different error (like 0x0000135C), the CLUSDB file itself is corrupted. You have two options:

  • Restore from backup — Copy a known-good CLUSDB file from a backup or from another node that wasn't corrupted.
  • Force a clean database — Delete CLUSDB, then start the cluster service. The cluster will create a new, empty database. You'll lose all cluster configuration (resources, groups, quorum settings). You'll need to recreate everything from scratch.

My advice: If you've got a backup, restore it. If not, force a clean database, then re-add your resources. It's a pain, but it's faster than rebuilding the whole cluster.

Prevention: What causes this error

This error mostly happens when:

  • A node loses network connectivity mid-transaction (e.g., a switch reboot while adding a resource).
  • Third-party antivirus or backup software holds a file lock on CLUSDB or CLUSDB.LOG.
  • Storage subsystem latency spikes cause I/O timeouts during transaction commits.

To avoid it going forward, add antivirus exclusions for C:\Windows\Cluster\*, ensure your cluster storage has consistent low latency (under 10ms), and don't perform cluster configuration changes during peak load.

That's it. Start with the 30-second fix, escalate only if needed. In my experience, the service restart solves it in 90% of cases, but the log truncation is the nuclear option that works every time.

Was this solution helpful?