<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Microsoft SQL Server on Netdata</title><link>https://www.netdata.cloud/tags/microsoft-sql-server/</link><description>Recent content in Microsoft SQL Server on Netdata</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 22 Aug 2026 05:09:03 +0300</lastBuildDate><atom:link href="https://www.netdata.cloud/tags/microsoft-sql-server/index.xml" rel="self" type="application/rss+xml"/><item><title>10 Best Microsoft SQL Server Monitoring Tools (2026)</title><link>https://www.netdata.cloud/resources/best-sql-server-monitoring-tools/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/resources/best-sql-server-monitoring-tools/</guid><description/></item><item><title>Windows Server Monitoring Software At Scale</title><link>https://www.netdata.cloud/solutions/technologies/windows-monitoring/</link><pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/solutions/technologies/windows-monitoring/</guid><description>Transform Windows Server monitoring with Netdata&amp;rsquo;s edge-native platform. Get per-second visibility, automatic discovery, and AI-powered troubleshooting at a fraction of traditional costs.</description></item><item><title>Microsoft SQL Server (MSSQL) Monitoring</title><link>https://www.netdata.cloud/monitoring-101/mssql-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/monitoring-101/mssql-monitoring/</guid><description>&lt;h2 id="microsoft-sql-server"&gt;Microsoft SQL Server&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Microsoft_SQL_Server"&gt;Microsoft SQL Server&lt;/a&gt; is a relational database management system (RDBMS) developed by Microsoft. It is a software product that stores and retrieves data as requested by other software applications. &lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-downloads"&gt;It can run on various platforms, such as Windows, Linux, and Azure&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="monitoring-microsoft-sql-server"&gt;Monitoring Microsoft SQL Server&lt;/h2&gt;&#10;&lt;p&gt;To holistically monitor Microsoft SQL Server, you need to track various aspects of its performance, health, and availability. Some of the key metrics to monitor include system level metrics about the impact of SQL Server such as:&lt;/p&gt;</description></item><item><title>Microsoft SQL Server monitoring checklist: the signals every production instance needs</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-monitoring-checklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-monitoring-checklist/</guid><description>&lt;p&gt;Most SQL Server outages are not exotic. The transaction log fills because a backup job silently stopped. A sleeping session with an open transaction blocks forty other sessions until the worker pool runs dry. TempDB runs out of space and every database on the instance stalls at once. All of these are visible hours or days in advance if you collect the right signals. Most teams do not.&lt;/p&gt;&#10;&lt;p&gt;This checklist is the minimum set of signals a production SQL Server instance needs, organized so you can audit what you have today and fill the gaps. It targets standalone instances, failover cluster instances, and AlwaysOn AG deployments on-premises or on VMs. Azure SQL Database and Managed Instance share many of the same DMVs but abstract storage and resource governance differently.&lt;/p&gt;</description></item><item><title>Microsoft SQL Server Operations Guides</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/</guid><description>How SQL Server actually fails in production, what the early warning signals look like, and the runbooks for the symptoms you&amp;rsquo;ll see in real incidents.</description></item><item><title>SQL Server AG send and redo queues growing: replication lag and failover RTO</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-ag-send-redo-queue-growing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-ag-send-redo-queue-growing/</guid><description>&lt;p&gt;Two queues decide whether your Always On Availability Group can actually fail over: the send queue (log generated on the primary but not yet shipped to the secondary) and the redo queue (log received by the secondary but not yet replayed). When either grows without bound, replication lag is the visible symptom, but the hidden cost is failover RTO. On forced or automatic failover, the new primary must drain the entire redo queue before it accepts writes, so a queue that looks tolerable during steady state can turn a 30-second failover into a 30-minute one.&lt;/p&gt;</description></item><item><title>SQL Server Availability Group not synchronizing: NOT_HEALTHY replicas and failover risk</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-ag-not-synchronizing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-ag-not-synchronizing/</guid><description>&lt;p&gt;The symptom arrives as an alert or a dashboard color change: a synchronous-commit secondary replica is reporting &lt;code&gt;synchronization_health_desc = NOT_HEALTHY&lt;/code&gt; or &lt;code&gt;connected_state_desc = DISCONNECTED&lt;/code&gt; in &lt;code&gt;sys.dm_hadr_availability_replica_states&lt;/code&gt;. The primary is still accepting writes, but the protection you assumed is degraded or gone.&lt;/p&gt;&#10;&lt;p&gt;In synchronous-commit mode, the primary waits for the secondary to harden log records before acknowledging commits. When the secondary drops or stops keeping up, the primary either continues unprotected or stops accepting writes entirely, depending on &lt;code&gt;required_synchronized_secondaries_to_commit&lt;/code&gt;. Either way, your recovery point objective and your recovery time objective are both at risk.&lt;/p&gt;</description></item><item><title>SQL Server backup freshness: the recovery point you only discover you lack during an incident</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-backup-freshness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-backup-freshness/</guid><description>&lt;p&gt;The recovery point you actually have is the recovery point you can restore to, not the one your schedule promises. Backup freshness is the gap between those two, measured as the time since the last successful full, differential, and transaction log backup per database. When that gap is wrong, you find out during restore: either an analyst files a ticket for missing data, or an incident forces point-in-time recovery and the chain breaks.&lt;/p&gt;</description></item><item><title>SQL Server blocking chains: finding the head blocker before workers run out</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-blocking-chain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-blocking-chain/</guid><description>&lt;p&gt;SQL Server is unresponsive. CPU and I/O counters are low. Connections succeed but queries hang. Timeouts and login failures follow. This is the shape of a blocking chain that has crossed into worker-thread exhaustion.&lt;/p&gt;&#10;&lt;p&gt;One session holds a lock. Conflicting sessions queue behind it, each waiting on an &lt;code&gt;LCK_M_*&lt;/code&gt; wait and each pinning a worker from SQL Server&amp;rsquo;s fixed-size pool. As the chain deepens, the worker pool drains. Once exhausted, new requests get &lt;code&gt;THREADPOOL&lt;/code&gt; waits and the instance appears down to applications, even though the OS shows &lt;code&gt;sqlservr&lt;/code&gt; healthy and storage idle.&lt;/p&gt;</description></item><item><title>SQL Server CPU utilization high: telling query load apart from a bad plan</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-cpu-utilization-high/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-cpu-utilization-high/</guid><description>&lt;p&gt;Your monitoring says the SQL Server host is at 98% CPU. Before you page anyone or start killing sessions: SQL Server is designed to use available CPU. A cold buffer pool after restart, backup compression, an ETL window, or a well-parallelized reporting query will all legitimately pin CPU at 90%+. High CPU is a symptom with no severity attached until you answer two questions: who is burning the CPU (SQL Server or something else on the host), and is the work useful (throughput) or wasted (a bad plan, a compilation storm, or spinlock contention).&lt;/p&gt;</description></item><item><title>SQL Server CXPACKET and CXCONSUMER waits: parallelism, MAXDOP, and what is actually wrong</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-cxpacket-cxconsumer-waits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-cxpacket-cxconsumer-waits/</guid><description>&lt;p&gt;You opened &lt;code&gt;sys.dm_os_wait_stats&lt;/code&gt;, excluded the idle noise, and CXPACKET is sitting at the top consuming 40, 50, maybe 70 percent of total wait time. The first search result tells you parallelism is out of control. The second tells you to set MAXDOP to 1. Both are usually wrong.&lt;/p&gt;&#10;&lt;p&gt;CXPACKET is routinely the number one wait on healthy systems. Its presence alone means parallel queries are running, and parallel threads spend much of their existence waiting for each other. The wait is a side effect of work being done in parallel, not the disease. The real questions are whether that parallel work is skewed, whether the queries going parallel should be parallel at all, and whether the engine is burning worker threads and CPU on plans that would be faster serial.&lt;/p&gt;</description></item><item><title>SQL Server database in SUSPECT or RECOVERY_PENDING: an offline database and how to recover it</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-database-suspect-recovery-pending/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-database-suspect-recovery-pending/</guid><description>&lt;p&gt;A production database is showing &lt;code&gt;state_desc = SUSPECT&lt;/code&gt; or &lt;code&gt;RECOVERY_PENDING&lt;/code&gt; in &lt;code&gt;sys.databases&lt;/code&gt;. Applications cannot open connections to that database. Users are seeing login failures, query timeouts, or generic &amp;ldquo;database cannot be opened&amp;rdquo; errors. The SQL Server instance itself is up, and every other database on it may be fine.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;RECOVERY_PENDING&lt;/code&gt; rarely means corruption. It usually means SQL Server could not get the resources it needed during recovery: a missing file, a full log volume, a permissions change, or a transient I/O failure at startup. &lt;code&gt;SUSPECT&lt;/code&gt; is more serious because recovery actually ran and failed, but it still does not automatically mean data loss. The wrong move is to jump straight to &lt;code&gt;DBCC CHECKDB&lt;/code&gt; with &lt;code&gt;REPAIR_ALLOW_DATA_LOSS&lt;/code&gt;. The right move is to fix the underlying resource, re-run recovery, and only fall back to repair or restore when that fails.&lt;/p&gt;</description></item><item><title>SQL Server Error 1205: transaction was deadlocked and chosen as the deadlock victim</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-1205-deadlock-victim/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-1205-deadlock-victim/</guid><description>&lt;p&gt;The error text returned to the client is explicit:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Transaction (Process ID %d) was deadlocked on %.*ls resources with another process and has been chosen as the deadlock victim. Rerun the transaction.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;code&gt;%d&lt;/code&gt; is the SPID. &lt;code&gt;%.*ls&lt;/code&gt; names the resource type, typically &lt;code&gt;lock&lt;/code&gt;. The message tells the application to rerun the transaction but not why the deadlock happened, which resource was contended, or which other session was involved. To answer those questions you need the deadlock graph.&lt;/p&gt;</description></item><item><title>SQL Server Error 18456: login failed for user, and what the state code means</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-18456-login-failed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-18456-login-failed/</guid><description>&lt;p&gt;SQL Server Error 18456 is the universal &amp;ldquo;Login failed for user X&amp;rdquo; message. It is deliberately vague: every client, from &lt;code&gt;sqlcmd&lt;/code&gt; to the application&amp;rsquo;s connection pool, sees the same string with severity 14 and state 1. The client never learns whether the password was wrong, the login does not exist, the database is offline, or the account is disabled. That information lives only in the SQL Server error log, encoded as a state code.&lt;/p&gt;</description></item><item><title>SQL Server Error 701: there is insufficient system memory to run this query</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-701-insufficient-memory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-701-insufficient-memory/</guid><description>&lt;p&gt;Error 701 is one of SQL Server&amp;rsquo;s bluntest messages: &amp;ldquo;There is insufficient system memory in resource pool &amp;lsquo;default&amp;rsquo; to run this query.&amp;rdquo; When it fires, the engine could not satisfy an allocation. Queries that were running fine seconds ago start failing, and the failure cascades into application timeouts, retry storms, and a flood of related errors (17890, 8645).&lt;/p&gt;&#10;&lt;p&gt;The error itself tells you very little. It does not say whether the buffer pool is starved, whether a single query is hoarding a memory grant, whether an Extended Events ring buffer has eaten 50 GB, or whether the OS is reclaiming memory from a VM balloon driver. Investigate by source.&lt;/p&gt;</description></item><item><title>SQL Server Error 823 and 824: I/O and logical consistency errors</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-823-824-io-errors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-823-824-io-errors/</guid><description>&lt;p&gt;Errors 823 and 824 are SQL Server&amp;rsquo;s severity-24 storage integrity alarms. 823 means the operating system reported a hard failure on a file API call. 824 means the call succeeded but the page failed an internal integrity check. Both are PAGE-worthy the moment they appear; they do not self-resolve, and continued use of the affected files risks losing data that was fine minutes earlier.&lt;/p&gt;&#10;&lt;p&gt;Error 825 is the soft warning that usually precedes both: SQL Server retried a read that initially failed and eventually succeeded. The query did not fail and no connection was killed, which is why most teams do not alert on it. It is also the most reliable predictor that an 823 or 824 is coming.&lt;/p&gt;</description></item><item><title>SQL Server Error 825: read-retry succeeded and the disk is failing</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-825-read-retry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-825-read-retry/</guid><description>&lt;p&gt;Error 825 is what SQL Server writes to the error log when a disk read failed on the first attempt but succeeded on a retry (attempt 2, 3, or 4). The query completes. The application sees no failure. But the storage underneath just told you it is failing.&lt;/p&gt;&#10;&lt;p&gt;Most monitoring setups never surface Error 825. It is a severity-10 informational message, and typical SQL Server Agent alert configurations target severity 20 and above. The error sits quietly in the log until something harder arrives: an 823 (hard I/O error) or an 824 (logical consistency error). By then the page may already be unreadable.&lt;/p&gt;</description></item><item><title>SQL Server Error 9002: the transaction log for the database is full</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-9002-transaction-log-full/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-error-9002-transaction-log-full/</guid><description>&lt;p&gt;Your application is throwing write failures and the SQL Server error log shows: &amp;ldquo;The transaction log for database &amp;lsquo;X&amp;rsquo; is full due to &amp;lsquo;LOG_BACKUP&amp;rsquo;&amp;rdquo; (or ACTIVE_TRANSACTION, AVAILABILITY_REPLICA, REPLICATION, or another reason in quotes). Every INSERT, UPDATE, and DELETE against that database now fails with error 9002. Read-only queries may still work, which makes the outage look confusingly partial from the outside.&lt;/p&gt;&#10;&lt;p&gt;This is the most common unexpected SQL Server outage, and it is preventable. It is also frequently mishandled: the instinctive responses, &amp;ldquo;add more disk space&amp;rdquo; and &amp;ldquo;shrink the log,&amp;rdquo; treat the symptom while the log keeps growing. The log is full because it cannot be truncated, and the reason it cannot be truncated is stated explicitly in &lt;code&gt;sys.databases.log_reuse_wait_desc&lt;/code&gt;. Read that first, fix that, then deal with the space.&lt;/p&gt;</description></item><item><title>SQL Server instance down: no response on port 1433 and where to look first</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-instance-down/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-instance-down/</guid><description>&lt;p&gt;Your availability probe just fired: TCP connect plus &lt;code&gt;SELECT 1&lt;/code&gt; against port 1433 has failed three or more times over at least 60 seconds. Before you restart anything, separate the two failure modes that get lumped together as &amp;ldquo;SQL Server is down&amp;rdquo;. They have different causes, different fixes, and different blast radii.&lt;/p&gt;&#10;&lt;p&gt;Mode one: no TCP connect at all. The listener is not accepting connections on 1433 (or the named instance&amp;rsquo;s dynamic port). The service is stopped, the host is down, the network path is broken, or the listener is misconfigured, commonly after an AlwaysOn failover. The engine is not there to talk to.&lt;/p&gt;</description></item><item><title>SQL Server PAGEIOLATCH waits: the buffer pool waiting on slow storage</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-pageiolatch-waits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-pageiolatch-waits/</guid><description>&lt;p&gt;Your top wait type is &lt;code&gt;PAGEIOLATCH_SH&lt;/code&gt; or &lt;code&gt;PAGEIOLATCH_EX&lt;/code&gt;. Queries that used to be sub-50ms now take seconds. CPU may be low. There are no blocking chains. The buffer pool is waiting on disk.&lt;/p&gt;&#10;&lt;p&gt;PAGEIOLATCH waits are the direct fingerprint of physical I/O. A worker needs an 8KB data page that is not in the buffer pool, takes an in-memory latch on the buffer descriptor, and waits for storage to return the page. When the read completes, the worker continues. Sustained PAGEIOLATCH time means the engine is spending wall-clock time waiting on disk.&lt;/p&gt;</description></item><item><title>SQL Server RESOURCE_SEMAPHORE waits: queries stuck waiting for a memory grant</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-resource-semaphore-waits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-resource-semaphore-waits/</guid><description>&lt;p&gt;RESOURCE_SEMAPHORE is the wait type SQL Server records when a worker thread cannot get a query memory grant. Before a query runs a sort, hash, or certain joins, the optimizer estimates how much workspace memory it needs and asks the grant pool for it. When the pool is exhausted, parsed-and-optimized queries sit in a queue. To the application they look hung.&lt;/p&gt;&#10;&lt;p&gt;CPU may be low. Disk I/O may be low. Buffer pool may look fine. Users report &amp;ldquo;the database is slow&amp;rdquo; and standard dashboards do not explain why. RESOURCE_SEMAPHORE only shows up clearly if you sample wait stats on a short interval and watch the Memory Grants Pending counter. Both are routinely missed.&lt;/p&gt;</description></item><item><title>SQL Server SOS_SCHEDULER_YIELD waits: CPU scheduler pressure explained</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-sos-scheduler-yield-waits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-sos-scheduler-yield-waits/</guid><description>&lt;p&gt;When SOS_SCHEDULER_YIELD dominates &lt;code&gt;sys.dm_os_wait_stats&lt;/code&gt;, the reflex is to assume CPU pressure and start hunting for bad queries. That reflex is right about half the time. The other half, you are chasing a signal that is doing exactly what it was designed to do: recording every time a worker voluntarily yielded its 4ms quantum because other runnable workers were queued.&lt;/p&gt;&#10;&lt;p&gt;The wait type has existed in SQL Server since the SQLOS era and the 4ms quantum is fixed in every version. It cannot be tuned. What you can tune is your interpretation. A workload doing efficient set-based scans of pages already in memory will yield constantly and rack up enormous SOS_SCHEDULER_YIELD numbers without anything being wrong. A VM on an oversubscribed host reports the same wait type while the hypervisor silently steals CPU cycles SQL Server cannot see.&lt;/p&gt;</description></item><item><title>SQL Server TempDB full: the shared scratch database that halts every query</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-tempdb-full/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-tempdb-full/</guid><description>&lt;p&gt;Applications start failing with error 1105 (&amp;ldquo;could not allocate space for object in database &amp;rsquo;tempdb&amp;rsquo; because the &amp;lsquo;PRIMARY&amp;rsquo; filegroup is full&amp;rdquo;) or error 3958, and the failures are not limited to one database. Every query on the instance that needs a temp table, a sort or hash spill, a worktable, or a row version touches TempDB. When TempDB cannot allocate space, all of them fail at once.&lt;/p&gt;&#10;&lt;p&gt;This is an instance-wide outage with a single shared point of failure, and it usually has one dominant consumer. The diagnostic job is short: identify which of the three consumer categories filled TempDB, find the sessions responsible, relieve the space pressure, then fix the root cause so it does not recur tomorrow.&lt;/p&gt;</description></item><item><title>SQL Server THREADPOOL waits: worker thread exhaustion and refused connections</title><link>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-threadpool-waits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/microsoft-sql-server/microsoft-sql-server-threadpool-waits/</guid><description>&lt;p&gt;Your monitoring says the SQL Server host is fine: CPU at 15%, disk latency normal, memory steady. But the application is timing out, new connections hang, and the instance might as well be down. When you finally get in, the wait stats tell the story: THREADPOOL.&lt;/p&gt;&#10;&lt;p&gt;THREADPOOL means every worker thread in the SQLOS pool is busy, and new requests are queuing for a thread that does not exist. From the client&amp;rsquo;s perspective this is equivalent to connection refusal. The server is not slow. It is not accepting work at all.&lt;/p&gt;</description></item></channel></rss>