Databases
    Updated May 2026
    MSSQL logo

    MSSQL Monitoring

    Monitor SQL Server Page Life Expectancy, Buffer Cache Hit Ratio, top wait stats (CXPACKET, PAGEIOLATCH, LCK_M_*), deadlocks, Always On AG send/redo queue, and Query Store regressions in real time.

    Why monitor MSSQL?

    SQL Server runs enterprise OLTP, ERP, Dynamics 365, SharePoint, and legacy WCF workloads. Blocking chains, deadlock storms, Always On AG drift, and Query Store plan regressions show up as 'the app is slow' long before they're traceable. Monitoring exposes the actual wait stat, the actual deadlock graph, the actual regressed query.

    Auto-discovery via Xitogent — no manual configuration required
    Real-time query performance and batch request metrics
    Buffer cache hit ratio and page life expectancy
    Wait statistics and deadlock detection
    Transaction log usage and growth tracking
    Index usage and missing index recommendations
    Supports Windows Server environments natively
    1-minute metric collection intervals
    What is SQL Server monitoring?

    SQL Server monitoring, explained

    SQL Server monitoring catches blocking chains, deadlock storms, Always On AG drift, memory pressure, and Query Store plan regressions before they cause user-visible slowness or HA failover events. For Dynamics 365, SharePoint, ERP, and any enterprise SQL workload, per-database wait-stats and Query Store visibility is what separates a clean tuning fix from a multi-day root-cause chase. Xitoring auto-discovers your SQL Server, reads native DMVs with the VIEW SERVER STATE permission, and routes alerts to Slack, PagerDuty, Telegram, or your existing on-call.

    Metrics

    What we monitor

    Batch Requests/sec

    Number of SQL batch requests received per second.

    Buffer Cache Hit Ratio

    Percentage of page reads satisfied from buffer pool vs physical disk reads.

    Page Life Expectancy

    Average time (seconds) a page stays in the buffer pool — lower values indicate memory pressure.

    Wait Statistics

    Top wait types and durations indicating resource bottlenecks.

    Deadlocks/sec

    Number of lock requests that resulted in deadlocks.

    Transaction Log Usage

    Percentage of transaction log space used per database.

    User Connections

    Number of active user connections to the SQL Server instance.

    Compilations/sec

    Number of SQL compilations and recompilations per second.

    Lock Waits/sec

    Number of lock requests that required the caller to wait.

    Index Fragmentation

    Fragmentation level of indexes across databases.

    CPU Usage

    SQL Server process CPU utilization vs total system CPU.

    Database Size

    Data and log file sizes for each database.

    Triggers & Alerts

    Configurable alert triggers

    Set up custom triggers in your dashboard to get notified the moment MSSQL metrics cross your defined thresholds.

    MSSQL monitoring trigger configuration dashboard

    Buffer Cache Hit Ratio

    critical

    Fires when cache hit ratio drops below threshold, indicating insufficient memory for workload.

    Page Life Expectancy

    warning

    Triggers when PLE drops below threshold, meaning pages are being flushed too quickly from memory.

    Deadlocks

    critical

    Alerts when deadlock rate exceeds threshold, indicating lock contention in application queries.

    Transaction Log Usage

    critical

    Fires when transaction log usage exceeds threshold, risking write failures.

    User Connections

    warning

    Triggers when connection count approaches limits, risking connection refused errors.

    Wait Statistics

    warning

    Alerts when specific wait types spike, indicating resource bottlenecks (CPU, I/O, memory, locks).

    01

    Importance of MSSQL Monitoring

    SQL Server runs mission-critical enterprise workloads — from ERP systems and financial databases to e-commerce platforms. Without monitoring, buffer pressure, deadlocks, and transaction log bloat can cause outages and data corruption.

    • Detect memory pressure through buffer cache and PLE metrics
    • Monitor wait statistics to identify the root cause of slowdowns
    • Track deadlocks to fix application-level locking issues
    • Ensure transaction log space for uninterrupted write operations
    • Optimize index usage to maintain query performance over time
    MSSQL monitoring dashboard with query performance and buffer cache metrics
    SQL Server deadlock detection and index usage analytics
    02

    Why Choose Xitoring

    Xitoring delivers enterprise-grade SQL Server monitoring with zero-config setup. Our lightweight agent auto-discovers your MSSQL instances, starts collecting metrics in under 60 seconds, and integrates with your existing notification channels.

    • Native Windows Server support with easy installer
    • 15+ global monitoring nodes for low-latency checks
    • Unified dashboard for servers, databases, and uptime
    • Flexible alerting via Slack, PagerDuty, Telegram & more
    • Historical data retention for capacity planning & audits
    Xitoring MSSQL monitoring overview on Windows Server
    Alert notification and escalation configuration
    Use cases

    Common SQL Server monitoring scenarios

    Where SQL Server typically runs today — and what could go wrong if no one's watching.

    Business apps and ERP systems

    When SQL Server runs critical business apps — finance, HR, sales — a slow database becomes a slow company. We watch the signals that show when the database is starting to struggle so the team can fix it before staff start calling IT.

    Backup databases for disaster recovery

    Companies run extra copies of their database — often in another region — so a single failure doesn't take the business offline. When those copies fall behind, recovery would lose more data than expected. We watch every copy so the disaster-recovery plan still works on the day you actually need it.

    SQL Server in the cloud or on Linux

    Whether SQL Server runs in Azure, on Linux, or somewhere in between, the visibility you get from the platform alone is rarely enough. We surface query slowdowns and other internal issues so cost and performance both stay in your control.

    Before you start

    Prerequisites for MSSQL

    Make sure you've got these in place — most installs are a 60-second job once they are.

    • Microsoft SQL Server 2016 or later (SQL Server 2022/2025 recommended), Azure SQL MI, or Azure SQL DB
    • A SQL login with CONNECT ANY DATABASE, VIEW SERVER STATE, VIEW ANY DEFINITION, and SELECT grants
    • TCP/IP enabled on the instance, with the port reachable from Xitogent
    Setup Guide

    Get started in minutes

    1

    Install Xitogent on your Windows server

    Download and install the Xitogent agent on your Windows Server hosting SQL Server.

    # Download from https://xitoring.com/xitogent # Run the installer as Administrator
    2

    Configure SQL Server access

    Create a dedicated login for monitoring with minimal privileges:

    CREATE LOGIN xitoring WITH PASSWORD = 'your_password'; CREATE USER xitoring FOR LOGIN xitoring; GRANT CONNECT ANY DATABASE TO xitoring; GRANT VIEW SERVER STATE TO xitoring; GRANT VIEW ANY DEFINITION TO xitoring; GRANT SELECT TO xitoring;
    3

    Enable the MSSQL integration

    Use the Xitoring dashboard or CLI to enable the MSSQL integration.

    xitogent integrate
    4

    Configure alert thresholds (optional)

    Set custom thresholds for buffer cache hit ratio, page life expectancy, or deadlock count to get notified when something needs attention.

    5

    Verify it's working

    Run this command on the server to confirm Xitogent picked up the integration. Fresh metrics will start streaming to your dashboard within ~30 seconds.

    sudo xitogent status

    Frequently asked questions

    What is SQL Server monitoring?
    SQL Server monitoring is the continuous collection of database performance data from Dynamic Management Views (DMVs), PerfMon counters, and the system_health Extended Event session — Page Life Expectancy, Buffer Cache Hit Ratio, Batch Requests/sec, top wait stats, deadlocks, Always On AG send/redo queue, Query Store regressions — combined with alerting when those metrics breach thresholds.
    How do I monitor SQL Server Page Life Expectancy?
    Page Life Expectancy (PLE) is from `sys.dm_os_performance_counters` (counter_name = `Page life expectancy`). It's the average seconds a data page stays in the buffer pool before being flushed. Old rule-of-thumb threshold was 300s; modern guidance is to baseline your workload and alert on >50% drop from the baseline. Sustained drops mean buffer pool is undersized — increase `max server memory` or add RAM.
    What are SQL Server wait stats and how do I read them?
    Wait stats from `sys.dm_os_wait_stats` show what SQL Server is spending its time waiting on — CXPACKET (parallelism), PAGEIOLATCH_SH (disk reads), ASYNC_NETWORK_IO (slow client), LCK_M_* (blocking), WRITELOG (transaction log flush), RESOURCE_SEMAPHORE (memory grants), HADR_SYNC_COMMIT (Always On sync replica). Top waits by `wait_time_ms` since last clear point at the real bottleneck. Xitogent surfaces top-10 waits per polling interval.
    How do I detect blocking and long-running queries in SQL Server?
    Query `sys.dm_exec_requests` JOIN `sys.dm_exec_sessions` WHERE `blocking_session_id != 0` for current blocking chains; `sp_who2 'active'` or `sp_WhoIsActive` (Adam Machanic's free tool) for live triage. For long-running queries, filter by `total_elapsed_time`. Xitogent surfaces the count of blocked sessions and the longest-running query per polling interval, alerting when either crosses your threshold.
    How do I monitor Always On Availability Groups?
    Read `sys.dm_hadr_database_replica_states` for per-replica `log_send_queue_size` (bytes not yet shipped to secondary — your RPO indicator), `redo_queue_size` (bytes not yet replayed on secondary — your RTO indicator), `synchronization_health` (HEALTHY / PARTIALLY_HEALTHY / NOT_HEALTHY), and `last_commit_time`. Alert on queue size > your RPO budget AND on any `synchronization_health != HEALTHY`. The AG Dashboard in SSMS surfaces the same data interactively.
    What is Query Store and how do I use it?
    Query Store is SQL Server's built-in flight-data-recorder for queries (on by default for new databases since 2022, and on Azure SQL). It captures every query's plan and runtime stats (`sys.query_store_query`, `sys.query_store_plan`, `sys.query_store_runtime_stats`, `sys.query_store_wait_stats`) so you can see plan changes and regressions. When a query regresses, force the previous plan with `sp_query_store_force_plan`. Xitogent surfaces top-10 regressed queries automatically.
    How do I detect deadlocks in SQL Server?
    The system_health Extended Event session captures deadlock graphs automatically (no Profiler needed). Read with `SELECT XEvent.value('(data/value/deadlock/process-list/process/@waitresource)[1]', 'nvarchar(100)') FROM sys.fn_xe_file_target_read_file(...)`. Track `Deadlocks/sec` from `sys.dm_os_performance_counters` for rate. Any non-zero rate is an app-side transaction-ordering or isolation-level issue — Xitogent alerts on deadlock spikes and surfaces the captured graphs.
    How do I monitor SQL Server backup health?
    Query `msdb.dbo.backupset` for last full/diff/log backup time per database, and `dm_io_virtual_file_stats` for log-flush throughput. Calculate RPO as time-since-last-log-backup. For Always On, track `last_commit_time` per replica. Xitogent surfaces stale-backup alerts (any database without a full backup in N hours, or log backup in M minutes) so missed maintenance jobs surface within the polling interval.
    What SQL Server versions are supported?
    SQL Server 2016 through 2022 (16.x) — and SQL Server 2025 (17.x) with Query Store for secondary replicas — plus Azure SQL Managed Instance, Azure SQL Database, and SQL Server on Linux (2017+). The integration auto-detects available DMVs and Query Store views; newer features (PSP optimization, IQP cardinality feedback, secondary-replica Query Store) surface where present.

    Start monitoring MSSQL today

    Set up in under 60 seconds. No credit card required. Full metrics from day one.

    Start Free Trial

    Keep exploring

    Related Integrations