0XC0000210

Fix STATUS_TRANSACTION_TIMED_OUT (0XC0000210) – 3 causes

Database Errors Intermediate 👁 6 views 📅 Jul 9, 2026

This error means a database or network transaction timed out waiting for a response. Most of the time it's a slow disk or a misconfigured SQL Server.

Cause 1: Slow disk I/O (the most common reason)

This error shows up when SQL Server sends a transaction to the disk and the disk takes so long that the transaction times out. You'll often see this on older spinning hard drives or shared storage that's overloaded.

How to check if it's a disk problem:

  1. Open Task Manager (Ctrl+Shift+Esc).
  2. Go to the Performance tab, then click on Disk.
  3. Look at "Active Time" – if it's above 90% for more than a few seconds, your disk is the bottleneck.

Fix it step by step:

  1. Identify which database files are on the slow disk. Open SQL Server Management Studio (SSMS), right-click your database, go to Properties > Files. Write down the path of the .mdf and .ldf files.
  2. Move those files to a faster drive. You can do this by detaching the database, moving the files, and re-attaching. Or use a backup/restore to the new location.
  3. If you can't move the files, try adding a second tempdb data file on a different drive. In SSMS, expand Management, right-click SQL Server Logs, then go to Database Settings. Under tempdb, increase the number of data files (start with 4 files on different drives).
  4. After moving files or adding tempdb files, restart the SQL Server service. In Services.msc, find "SQL Server (MSSQLSERVER)", right-click, select Restart.

What you should see: After restarting, run a few queries that previously timed out. If the disk was the cause, they'll complete in seconds.

Cause 2: Network timeouts or latency

Another big reason: the network between your app and the database server is slow, or there's a firewall dropping packets. This is especially common if you're querying a database across a VPN or over the internet.

Test for network issues:

  1. Open Command Prompt as admin.
  2. Type ping -t [SQL Server IP address] and let it run for 30 seconds. Watch for any "Request timed out" messages or spikes above 100ms.
  3. Press Ctrl+C to stop. Look at the summary – if packet loss is above 0%, fix your network first.

Fix it like this:

  1. If you see packet loss, check your firewall rules. On the SQL Server machine, open Windows Defender Firewall with Advanced Security. Look for inbound rules that allow TCP port 1433 (SQL Server default). Make sure they're enabled and not blocking traffic.
  2. If latency is high (over 200ms), you can increase the timeout value in your connection string. For example, in a .NET application, add Connection Timeout=60 to your connection string (inside the web.config or app.config file). This gives the transaction 60 seconds instead of the default 30.
  3. If you're using SQLCMD, run this: sqlcmd -S [server] -d [database] -Q "SELECT 1" -t 60 – the -t flag sets command timeout to 60 seconds.

What you should see: After adjusting timeout or fixing the network, the error should stop appearing for simple queries. If it still happens, move to cause 3.

Cause 3: Blocked queries or deadlocks

Sometimes the error isn't about speed – it's about a transaction that's stuck waiting for a lock. This happens when another query holds a lock on a table or row and won't let go. You'll see this in busy databases with many users updating the same data.

Find the blocker:

  1. In SSMS, open a new query window and run this:
    SELECT
        blocking_session_id AS BlockingSession,
        session_id AS BlockedSession,
        wait_time / 1000 AS WaitSeconds,
        wait_type
    FROM sys.dm_exec_requests
    WHERE blocking_session_id > 0
  2. Look for rows where WaitSeconds is high (over 30).
  3. Note the BlockingSession ID.

Kill the blocker (carefully):

  1. Run KILL [BlockingSession ID] – e.g., KILL 62.
  2. After killing it, run your original query again. It should complete immediately.

Prevent it from happening again:

  • Check your queries for missing indexes. A missing index can cause table scans that lock everything. In SSMS, right-click a query, select "Display Estimated Execution Plan". Look for green messages that say "Missing Index".
  • Create that index. Right-click the missing index suggestion and select "Create Index Script". Run the generated script.
  • Also, set a lower transaction isolation level if your app allows it. In your connection string, add Transaction Isolation Level = READ UNCOMMITTED. This lets your query read data even if it's locked by another transaction. Use it only if dirty reads are acceptable.

What you should see: After killing the blocker or adding the index, the query completes without error. The error won't come back unless you have another blocker.

Quick reference summary

Cause Signs Fix
Slow disk I/O High disk active time, slow file operations Move database files to faster drive, add tempdb files
Network timeouts Ping shows packet loss or high latency Fix firewall rules, increase connection timeout
Blocked queries Blocking_session_id found in sys.dm_exec_requests Kill blocker, add missing indexes, lower isolation level

One last thing: If you still see the error after trying all three, check the Windows Application Event Log. Look for events with ID 17055 or 17058 from MSSQLSERVER. They often give you the exact query that timed out. Then you can tune that specific query.

Was this solution helpful?