Skip to content
Microsoft SQL Server plug-in

Metrics reference

View Markdown

This page is generated from the plug-in’s own target metadata, for the exact build you deploy, rather than written by hand - so it cannot drift from what the plug-in actually collects. Where another page and this one disagree on a column name, a unit or a threshold, this page is authoritative.

It covers all 78 metric groups and 703 columns on the ip_mssql_database target type, each with its collection schedule, its columns, their display labels and units, and the default thresholds that ship.

Every entry has the same shape. The heading gives the group’s display name, its internal name in parentheses - the name EM CLI, thresholds and the metric browser use - and its collection schedule. One sentence underneath says what the group collects and where the values come from. Then the column table:

ColumnWhat it tells you
ColumnThe column’s internal name, in the form EM CLI and threshold commands take. A (key) marker means the column is part of the group’s key, so the group returns one row per distinct key value - per database, per index, per wait type - rather than a single row. A group with no key column returns exactly one row per collection.
LabelThe display name shown in the console.
UnitThe unit Enterprise Manager labels the value with, for example KB, SECOND, PERCENTAGE or BOOLEAN. NA means the value carries no unit - a count, a state or a string.
Warning / CriticalThe default threshold that ships for the column, with its operator. A blank cell means no default threshold, which is the normal case: 20 curated thresholds ship, listed on Alerts and thresholds. A blank cell is not an omission and it does not stop you setting your own.

Groups marked configuration snapshot in their heading behave differently. They collect into Enterprise Manager’s configuration history rather than into the metric tables, which is what makes an instance’s settings comparable over time and against other instances under Enterprise -> Configuration, and what the compliance rules evaluate. They carry no thresholds and raise no alerts.

Some groups are empty on a given instance by design rather than by fault - the AlwaysOn families on a standalone server, the cluster families under Pacemaker, the Windows registry family on Linux. An empty group is the plug-in reporting that the feature is not present, not a collection failure.

Microsoft SQL Server Database (ip_mssql_database)

Section titled “Microsoft SQL Server Database (ip_mssql_database)”

Response (Response) - collected every 1 Min

Section titled “Response (Response) - collected every 1 Min”

Availability. EM derives the target’s Up/Down state from the Status column; a Status below 1 raises the target-down event. This is the only group whose condition is an availability condition rather than a metric threshold.

ColumnLabelUnitWarningCritical
StatusStatus (1 = up, 0 = down)NA< 1

Memory Usage (MemoryUsage) - collected every 15 Min

Section titled “Memory Usage (MemoryUsage) - collected every 15 Min”

Host and SQL Server memory from sys.dm_os_sys_memory and sys.dm_os_process_memory - physical and page-file totals, what the SQL Server process holds, and the OS memory-state description.

ColumnLabelUnitWarningCritical
total_physical_memory_kbTotal Physical Memory (KB)KB
available_physical_memory_kbAvailable Physical Memory (KB)KB
server_memory_kbHost Used Memory (KB)KB
total_page_file_kbTotal Page File (KB)KB
available_page_file_kbAvailable Page File (KB)KB
system_memory_state_descSystem Memory State (text: memory highlowsteady…)
sql_process_memory_kbSQL Server Process Memory (KB)KB

Processor (Processor) - collected every 15 Min

Section titled “Processor (Processor) - collected every 15 Min”

CPU counts and utilization from sys.dm_os_sys_info and the scheduler ring buffer, split into the SQL Server process, other processes, and idle. On SQL Server 2017, 2019 and 2022 on Linux the OS idle counter is unreadable, so the three utilization columns are EMPTY rather than zero and cpu_counters_available is 0 - read that flag before treating a zero as a measurement, since an absent numeric is rendered as 0 by some clients. A genuinely saturated host reads the same way. See the boundaries list in the user guide’s release notes (section 14.1).

ColumnLabelUnitWarningCritical
cpu_countCPU CountNA
hyperthread_ratioHyperthread RatioNA
sql_process_utilizationSQL Process CPU (%)PERCENTAGE
system_idleSystem Idle (%)PERCENTAGE
other_process_utilizationOther Process CPU (%)PERCENTAGE
cpu_utilization_pctCPU Utilization (%)PERCENTAGE> 80> 90
cpu_counters_availableCPU Counters Available (0/1: 1 = OS idle readable)BOOLEAN

Volume Space (VolumeSpace) - collected every 15 Min

Section titled “Volume Space (VolumeSpace) - collected every 15 Min”

Total and available space per volume hosting database files, from sys.dm_os_volume_stats, with a ships-enabled low-space threshold on the available percentage. One row per distinct mount point; on Linux every volume collapses into one row holding the smallest free space.

ColumnLabelUnitWarningCritical
volume_mount_point (key)Volume Mount PointNA
logical_volume_nameLogical Volume NameNA
total_bytesTotal BytesBYTE
available_bytesAvailable BytesBYTE
available_pctAvailable (%)PERCENTAGE< 10< 5

SQL Server Configuration (SQLServer) - collected every 24 Hr

Section titled “SQL Server Configuration (SQLServer) - collected every 24 Hr”

Instance identity and edition - server and machine name, edition, product version and level, collation, and whether the instance is clustered, HADR-enabled or integrated-security only.

ColumnLabelUnitWarningCritical
server_nameServer NameNA
machine_nameMachine NameNA
instance_nameInstance NameNA
editionEditionNA
product_versionProduct VersionNA
product_levelProduct LevelNA
collationServer CollationNA
is_clusteredClustered FCI (0/1: 1 = clustered)BOOLEAN
is_hadr_enabledAlwaysOn AG Enabled (0/1: 1 = enabled)BOOLEAN
is_integrated_security_onlyWindows Auth Only (0/1: 1 = Windows authentication only)BOOLEAN

Databases (Database) - collected every 24 Hr

Section titled “Databases (Database) - collected every 24 Hr”

Per-database inventory from sys.databases - state, recovery model, compatibility level, collation, creation date, and the log-reuse wait that explains why a log is not truncating.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
database_idDatabase IDNA
state_descDatabase State (ONLINERESTORINGRECOVERINGSUSPECT
recovery_model_descRecovery Model (SIMPLEFULLBULK_LOGGED)NA
compatibility_levelCompatibility LevelNA
collation_nameCollationNA
create_dateCreate DateNA
is_read_onlyRead Only (0/1: 1 = read only)BOOLEAN
containment_descContainment (NONEPARTIAL)NA
log_reuse_wait_descLog Reuse Wait (NOTHINGLOG_BACKUPACTIVE_TRANSACTION…)
ownerOwnerNA

Database Settings (DatabaseSetting) - collected every 24 Hr

Section titled “Database Settings (DatabaseSetting) - collected every 24 Hr”

Per-database options that matter for correctness and performance: auto-close, auto-shrink, auto-create and auto-update statistics, page verification, snapshot isolation, read-committed snapshot, trustworthy, and Service Broker.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
is_auto_close_onAuto Close (0/1: 1 = on)BOOLEAN
is_auto_shrink_onAuto Shrink (0/1: 1 = on)BOOLEAN
is_auto_create_stats_onAuto Create Statistics (0/1: 1 = on)BOOLEAN
is_auto_update_stats_onAuto Update Statistics (0/1: 1 = on)BOOLEAN
page_verify_option_descPage Verify (NONETORN_PAGE_DETECTIONCHECKSUM)NA
snapshot_isolation_state_descSnapshot Isolation (OFFONIN_TRANSITION_TO_ON…)
is_read_committed_snapshot_onRead Committed Snapshot (0/1: 1 = on)BOOLEAN
is_trustworthy_onTrustworthy (0/1: 1 = on)BOOLEAN
is_broker_enabledService Broker Enabled (0/1: 1 = enabled)BOOLEAN

Database Status (DatabaseStatus) - collected every 24 Hr

Section titled “Database Status (DatabaseStatus) - collected every 24 Hr”

Per-database availability state - online/offline/restoring, user access mode, standby, read-only, and whether the database is encrypted.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
database_idDatabase IDNA
state_descDatabase State (ONLINERESTORINGRECOVERINGSUSPECT
user_access_descUser Access (MULTI_USERSINGLE_USERRESTRICTED_USER)NA
is_in_standbyIn Standby (0/1: 1 = standby)BOOLEAN
is_read_onlyRead Only (0/1: 1 = read only)BOOLEAN
is_encryptedTDE Encrypted (0/1: 1 = encrypted)BOOLEAN

Server Configuration Parameters (DatabaseParameter) - collected every 24 Hr

Section titled “Server Configuration Parameters (DatabaseParameter) - collected every 24 Hr”

Server-level settings from sys.configurations: the configured value, the value in use, the permitted range, and whether the setting is dynamic or advanced. One row per setting.

ColumnLabelUnitWarningCritical
parameter_name (key)Parameter NameNA
configuration_idConfiguration IDNA
valueConfigured ValueNA
value_in_useRunning ValueNA
minimumMinimumNA
maximumMaximumNA
is_dynamicDynamic (0/1: 1 = takes effect without restart)BOOLEAN
is_advancedAdvanced Option (0/1: 1 = advanced)BOOLEAN

Database Files (DatabaseFile) - collected every 24 Hr

Section titled “Database Files (DatabaseFile) - collected every 24 Hr”

Every data and log file from sys.master_files - type, physical path, state, current and maximum size, and the autogrowth setting including whether growth is a percentage. Needs VIEW ANY DEFINITION; without it the group is permanently empty.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
logical_name (key)Logical NameNA
file_idFile IDNA
type_descFile Type (ROWSLOGFILESTREAMFULLTEXT)
physical_namePhysical PathNA
state_descFile State (ONLINERESTORINGRECOVERINGOFFLINE
size_kbSize (KB)KB
max_size_kbMax Size (KB, -1=unlimited)KB
growth_rawGrowth (pages, or percent when Growth Is Percent = 1)NA
is_percent_growthGrowth Is Percent (0/1: 1 = percent, 0 = pages)BOOLEAN

File Groups (FileGroup) - collected every 24 Hr

Section titled “File Groups (FileGroup) - collected every 24 Hr”

Filegroups per database - type, default and read-only flags, the number of files in the group, and the group’s total size.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
filegroup_name (key)File Group NameNA
filegroup_idFile Group IDNA
type_descFile Group Type (ROWS_FILEGROUPFILESTREAM_DATA_……)NA
is_defaultDefault File Group (0/1: 1 = default)BOOLEAN
is_read_onlyRead Only (0/1: 1 = read only)BOOLEAN
file_countFile CountNA
total_size_kbTotal Size (KB)KB

Database Free Space (DbFreespace) - collected every 24 Hr

Section titled “Database Free Space (DbFreespace) - collected every 24 Hr”

Allocated, used and free space per database, plus the size autogrowth can reach (up to each file’s max size or the volume’s free space) and the headroom left before it, which carries the ships-enabled low-space threshold.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
allocated_kbAllocated (KB)KB
used_kbUsed (KB)KB
free_kbFree (KB)KB
free_pctFree (% of allocated size)PERCENTAGE
reachable_kbReachable Size (KB, with autogrowth and volume free space)KB
headroom_kbHeadroom (KB, reachable size minus used)KB
headroom_pctHeadroom (% of reachable size)PERCENTAGE< 15< 5

Host Info (HostInfo) - collected every 1 Hr

Section titled “Host Info (HostInfo) - collected every 1 Hr”

Operating system platform, distribution, release, service pack and SKU from sys.dm_os_host_info, which is what makes the host families Linux-safe.

ColumnLabelUnitWarningCritical
host_platformHost PlatformNA
host_distributionHost DistributionNA
host_releaseHost ReleaseNA
host_service_pack_levelHost Service Pack LevelNA
host_skuHost SKU (Windows code; blank if Host Platform is Linux)NA
os_language_versionOS Language Version (Windows code; 0 on Linux)NA

Registry Setting (RegistrySetting) - collected every 24 Hr

Section titled “Registry Setting (RegistrySetting) - collected every 24 Hr”

Windows registry values for the instance. Windows-only enrichment; the group returns an empty result on Linux rather than erroring. is_numeric_value is 1 when Value Data is a number and 0 otherwise (text, binary or empty).

ColumnLabelUnitWarningCritical
registry_key (key)Registry KeyNA
value_name (key)Value NameNA
value_dataValue DataNA
is_numeric_valueNumeric Value (0/1: 1 = Value Data is a number)BOOLEAN

FCI / Cluster Identity (FciIdentity) - collected every 15 Min

Section titled “FCI / Cluster Identity (FciIdentity) - collected every 15 Min”

Failover-cluster identity - whether the instance is clustered, the active node, and the external-cluster boundary flag that marks a Linux instance whose availability is managed by Pacemaker rather than WSFC.

ColumnLabelUnitWarningCritical
is_clusteredClustered FCI (0/1: 1 = clustered)BOOLEAN
machine_nameVirtual Machine NameNA
active_nodeActive NodeNA
host_platformHost PlatformNA
has_availability_groupHosts Availability Group (0/1: 1 = yes)BOOLEAN
external_cluster_boundaryExternal Cluster Boundary (0/1: 1 = Pacemaker, not WSFC)BOOLEAN

Cluster Nodes (ClusterNodes) - collected every 15 Min

Section titled “Cluster Nodes (ClusterNodes) - collected every 15 Min”

WSFC cluster node list with each node’s status and whether it currently owns the instance. Empty on a standalone instance, and empty by design under Pacemaker, where WSFC node detail does not exist.

ColumnLabelUnitWarningCritical
node_name (key)Node NameNA
statusNode Status (0 = up, 1 = down, 2 = paused, 3 = joining)NA
status_descriptionNode Status Description (UpDownPausedJoining)
is_current_ownerCurrent Owner (0/1: 1 = node owns the instance)BOOLEAN

General Statistics (GeneralStatistics) - collected every 30 Min

Section titled “General Statistics (GeneralStatistics) - collected every 30 Min”

SQL Server General Statistics performance counters - connections, processes and logins per second. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

SQL Statistics (SQLStatistics) - collected every 10 Min

Section titled “SQL Statistics (SQLStatistics) - collected every 10 Min”

SQL Server SQL Statistics performance counters - batch requests, compilations and recompilations. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Access Methods (AccessMethods) - collected every 30 Min

Section titled “Access Methods (AccessMethods) - collected every 30 Min”

SQL Server Access Methods performance counters - scans, page splits, and index and table access rates. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Buffer Manager (BufferManager) - collected every 15 Min

Section titled “Buffer Manager (BufferManager) - collected every 15 Min”

SQL Server Buffer Manager performance counters - page life expectancy, buffer cache hit ratio, and page read/write rates. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Memory Manager (MemoryManager) - collected every 15 Min

Section titled “Memory Manager (MemoryManager) - collected every 15 Min”

SQL Server Memory Manager performance counters - target and total server memory, grants pending, and memory-clerk totals. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Latches (Latches) - collected every 15 Min

Section titled “Latches (Latches) - collected every 15 Min”

SQL Server Latches performance counters - latch waits and average latch wait time. One row per counter.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Cache Manager (CacheManager) - collected every 15 Min

Section titled “Cache Manager (CacheManager) - collected every 15 Min”

SQL Server Plan Cache performance counters per cache type - cache hit ratio, object counts and pages in use. Keyed by counter and cache instance.

ColumnLabelUnitWarningCritical
counter_name (key)CounterNA
instance_name (key)Cache TypeNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
cntr_valueValue (per sec for Counter Type 272696576, else raw)NA

Process Stats (ProcessStats) - collected every 15 Min

Section titled “Process Stats (ProcessStats) - collected every 15 Min”

The SQL Server process’s own memory footprint from sys.dm_os_process_memory - physical memory in use, committed and reserved virtual address space, page faults, and the process memory-utilization percentage.

ColumnLabelUnitWarningCritical
physical_memory_in_use_kbPhysical Memory In Use (KB)KB
virtual_address_space_committed_kbVAS Committed (KB)KB
virtual_address_space_reserved_kbVAS Reserved (KB)KB
page_fault_countPage FaultsNA
memory_utilization_percentageMemory Utilization (%)PERCENTAGE

Memory Statistics (MemoryStatistics) - collected every 15 Min

Section titled “Memory Statistics (MemoryStatistics) - collected every 15 Min”

Derived cache and contention ratios computed in the collection rather than read raw: buffer and plan cache hit ratios, and average latch and lock wait times. The two hit ratios are computed from the ratio/base counter pair, which is a rolling window rather than a lifetime accumulator.

ColumnLabelUnitWarningCritical
buffer_cache_hit_ratio_pctBuffer Cache Hit Ratio per Interval (%)PERCENTAGE
plan_cache_hit_ratio_pctPlan Cache Hit Ratio per Interval (%)PERCENTAGE
avg_latch_wait_msAvg Latch Wait per Interval (ms)MILLISECONDS
avg_lock_wait_msAvg Lock Wait per Interval (ms)MILLISECONDS

Server Statistics (ServerStatistics) - collected every 15 Min

Section titled “Server Statistics (ServerStatistics) - collected every 15 Min”

Instance-wide totals from sys.sysprocesses and @@-style counters - CPU and I/O busy time, packet counts and errors, connection counts, and derived CPU-busy and packet-error percentages.

ColumnLabelUnitWarningCritical
cpu_busyCPU Busy (ticks)NA
io_busyIO Busy (ticks)NA
idleIdle (ticks)NA
pack_sentPackets SentNA
pack_receivedPackets ReceivedNA
packet_errorsPacket ErrorsNA
total_readTotal ReadsNA
total_writeTotal WritesNA
total_errorsTotal ErrorsNA
connectionsConnectionsNA
max_connectionsMax ConnectionsNA
cpu_busy_pctCPU Busy (%)PERCENTAGE
packet_error_pctPacket Error (%)PERCENTAGE

Latch Wait Time (LatchWaitTime) - collected every 15 Min

Section titled “Latch Wait Time (LatchWaitTime) - collected every 15 Min”

Average latch wait time in milliseconds, isolated as a single numeric row so it can be charted as a trend.

ColumnLabelUnitWarningCritical
avg_latch_wait_msAvg Latch Wait per Interval (ms)MILLISECONDS

Availability Groups (AvailabilityGroups) - collected every 15 Min

Section titled “Availability Groups (AvailabilityGroups) - collected every 15 Min”

One row per availability group - the current primary replica, the primary and secondary recovery health, and the group’s overall synchronization health, as text and as the DMV’s code (0 not healthy, 1 partially healthy, 2 healthy, -1 unknown).

ColumnLabelUnitWarningCritical
group_id (key)Group IDNA
group_nameGroup NameNA
primary_replicaPrimary ReplicaNA
primary_recovery_health_descPrimary Recovery Health (ONLINE_IN_PROGRESSONLINE)NA
secondary_recovery_health_descSecondary Recovery Health (ONLINE_IN_PROGRESSONLINE)NA
synchronization_health_descSync Health (NOT_HEALTHYPARTIALLY_HEALTHYHEALTHY)NA
synchronization_healthSync Health Code (0=unhealthy, 1=partial, 2=healthy, -1=unknown)NA

Availability Replicas (Replicas) - collected every 15 Min

Section titled “Availability Replicas (Replicas) - collected every 15 Min”

One row per replica in every availability group - server name, role, operational and connected state, recovery health, synchronization health, and join state.

ColumnLabelUnitWarningCritical
replica_id (key)Replica IDNA
group_idGroup IDNA
replica_server_nameReplica ServerNA
is_localLocal Replica (0/1: 1 = this instance)BOOLEAN
role_descRole (PRIMARYSECONDARYRESOLVING)NA
operational_state_descOperational State (ONLINEOFFLINEPENDINGFAILED
connected_state_descConnected State (DISCONNECTEDCONNECTED)NA
recovery_health_descRecovery Health (ONLINE_IN_PROGRESSONLINE)NA
synchronization_health_descSync Health (NOT_HEALTHYPARTIALLY_HEALTHYHEALTHY)NA
join_state_descJoin State (NOT_JOINEDJOINED_STANDALONEJOINED_…)NA

Availability Databases (AvailabilityDatabases) - collected every 15 Min

Section titled “Availability Databases (AvailabilityDatabases) - collected every 15 Min”

Per-database, per-replica failover state - whether the database is failover-ready, joined, or pending suspend, plus the recovery and truncation LSNs.

ColumnLabelUnitWarningCritical
replica_id (key)Replica IDNA
group_database_id (key)Group Database IDNA
database_nameDatabase NameNA
is_failover_readyFailover Ready (0/1: 1 = ready)BOOLEAN
is_pending_secondary_suspendPending Secondary Suspend (0/1: 1 = pending)BOOLEAN
is_database_joinedDatabase Joined (0/1: 1 = joined)BOOLEAN
recovery_lsnRecovery LSNNA
truncation_lsnTruncation LSNNA

Replica Databases (ReplicaDatabases) - collected every 15 Min

Section titled “Replica Databases (ReplicaDatabases) - collected every 15 Min”

Per-database synchronization state on each replica - synchronization state and health, and whether data movement is suspended.

ColumnLabelUnitWarningCritical
group_id (key)Group IDNA
replica_id (key)Replica IDNA
database_id (key)Database IDNA
database_nameDatabase NameNA
is_localLocal Replica (0/1: 1 = this instance)BOOLEAN
is_primary_replicaPrimary Replica (0/1: 1 = primary)BOOLEAN
synchronization_state_descSync State (SYNCHRONIZEDSYNCHRONIZINGNOT SYNC……)
synchronization_health_descSync Health (NOT_HEALTHYPARTIALLY_HEALTHYHEALTHY)NA
is_suspendedSuspended (0/1: 1 = data movement suspended)BOOLEAN

AlwaysOn Cluster (WSFC Quorum) (HadrCluster) - collected every 15 Min

Section titled “AlwaysOn Cluster (WSFC Quorum) (HadrCluster) - collected every 15 Min”

The WSFC quorum backing AlwaysOn - cluster name, quorum type and quorum state. Empty on an instance with no cluster.

ColumnLabelUnitWarningCritical
cluster_name (key)Cluster NameNA
quorum_typeQuorum Type (0 = node, 1 = node+disk, 2 = node+share, 3 = disk)NA
quorum_type_descQuorum Type (NODE_MAJORITYNODE_AND_DISK_MAJORITY…)NA
quorum_stateQuorum State (0 = unknown, 1 = normal, 2 = forced)NA
quorum_state_descQuorum State (NORMAL_QUORUMFORCED_QUORUMUNKNOWN_…)NA

AlwaysOn Enabled (HadrEnabled) - collected every 15 Min

Section titled “AlwaysOn Enabled (HadrEnabled) - collected every 15 Min”

Whether the AlwaysOn Availability Groups feature is enabled on the instance. A single flag, collected so a target can be told apart from one where AlwaysOn is merely unused.

ColumnLabelUnitWarningCritical
is_hadr_enabledAlwaysOn Enabled (0/1: 1 = enabled)BOOLEAN

AG Failover Readiness (AgFailoverReadiness) - collected every 15 Min

Section titled “AG Failover Readiness (AgFailoverReadiness) - collected every 15 Min”

The flagship AlwaysOn surface: per-database recovery point and recovery time estimates, the send and redo queue depths behind them, the redo rate, a synchronization-state composite, and a link-health flag. Four of these columns carry thresholds. Primary-authoritative - the group is empty on a secondary replica and on a non-AG instance, because only the primary can measure the queues.

ColumnLabelUnitWarningCritical
group_id (key)AG IDNA
group_database_id (key)AG Database IDNA
replica_id (key)Replica IDNA
ag_nameAvailability GroupNA
database_nameDatabaseNA
replica_server_nameSecondary ReplicaNA
synchronization_state_descSync State (SYNCHRONIZEDSYNCHRONIZINGNOT SYNC……)
synchronization_health_descSync Health (NOT_HEALTHYPARTIALLY_HEALTHYHEALTHY)NA
is_suspendedSuspended (0/1: 1 = data movement suspended)BOOLEAN
log_send_queue_kbLog Send Queue (KB)KB> 1048576> 5242880
redo_queue_kbRedo Queue (KB)KB> 1048576> 5242880
redo_rate_kb_sRedo Rate (KB/s)KBPS
rpo_secondsRPO - Est. Data Loss (s)SECOND> 300> 900
rto_secondsRTO - Est. Recovery (s)SECOND
readinessFailover Ready (0/1: 1 = ready)BOOLEAN
link_healthyReplica Link Healthy (0/1: 1 = healthy)BOOLEAN< 1
last_commit_primaryPrimary Last CommitNA
last_commit_secondarySecondary Last CommitNA
commit_position_knownCommit Position Known (0/1: 1 = RPO is measured)BOOLEAN
queue_state_knownQueue State Known (0/1: 1 = queue sizes reported)BOOLEAN
log_send_rate_kb_sLog Send Rate (KB/s)KBPS
synchronization_stateSync State (0=not sync, 1=syncing, 2=synced, 3=revert, 4=init)NA

Database Mirroring (MirroringMonitoring) - collected every 15 Min

Section titled “Database Mirroring (MirroringMonitoring) - collected every 15 Min”

Legacy database mirroring state per database - mirroring state, role, safety level, partner and witness, and the redo queue. Empty when no database is mirrored.

ColumnLabelUnitWarningCritical
database_id (key)Database IDNA
database_nameDatabase NameNA
mirroring_state_descMirroring State (SYNCHRONIZEDSYNCHRONIZINGSUSPENDED…)
mirroring_role_descMirroring Role (PRINCIPALMIRROR)NA
mirroring_safety_level_descSafety Level (FULLOFFUNKNOWN)NA
mirroring_partner_namePartner NameNA
mirroring_partner_instancePartner InstanceNA
mirroring_witness_nameWitness NameNA
mirroring_witness_state_descWitness State (CONNECTEDDISCONNECTEDUNKNOWN)NA
mirroring_redo_queue_kbRedo Queue (KB)KB

Database Mirroring Statistics (MirroringStatistics) - collected every 15 Min

Section titled “Database Mirroring Statistics (MirroringStatistics) - collected every 15 Min”

Database Mirroring performance counters per mirrored database - send and redo queue sizes and transaction rates. Empty when no database is mirrored.

ColumnLabelUnitWarningCritical
counter_name (key)Counter NameNA
cntr_typeCounter Type (272696576 = bulk count, 65792 = gauge, …)NA
instance_name (key)DatabaseNA
cntr_valueValue (raw; cumulative for Counter Type 272696576)NA

SQL Server Instance Configuration (SQLServerConfig) - configuration snapshot, collected every 24 Hr

Section titled “SQL Server Instance Configuration (SQLServerConfig) - configuration snapshot, collected every 24 Hr”

Configuration snapshot of SQL Server Instance Configuration, captured for configuration history and compliance evaluation rather than for alerting.

ColumnLabelUnitWarningCritical
SERVER_NAMEServer NameNA
MACHINE_NAMEMachine NameNA
INSTANCE_NAMEInstance NameNA
EDITIONEditionNA
PRODUCT_VERSIONProduct VersionNA
PRODUCT_LEVELProduct LevelNA
COLLATIONServer CollationNA
IS_CLUSTEREDClustered FCI (0/1: 1 = clustered)BOOLEAN
IS_HADR_ENABLEDAlwaysOn AG Enabled (0/1: 1 = enabled)BOOLEAN
IS_INTEGRATED_SECURITY_ONLYWindows Auth Only (0/1: 1 = Windows authentication only)BOOLEAN

Database Settings Configuration (DatabaseSettingConfig) - configuration snapshot, collected every 24 Hr

Section titled “Database Settings Configuration (DatabaseSettingConfig) - configuration snapshot, collected every 24 Hr”

Configuration snapshot of Database Settings Configuration, captured for configuration history and compliance evaluation rather than for alerting.

ColumnLabelUnitWarningCritical
DATABASE_NAME (key)Database NameNA
IS_AUTO_CLOSE_ONAuto Close (0/1: 1 = on)BOOLEAN
IS_AUTO_SHRINK_ONAuto Shrink (0/1: 1 = on)BOOLEAN
IS_AUTO_CREATE_STATS_ONAuto Create Statistics (0/1: 1 = on)BOOLEAN
IS_AUTO_UPDATE_STATS_ONAuto Update Statistics (0/1: 1 = on)BOOLEAN
PAGE_VERIFY_OPTION_DESCPage Verify OptionNA
SNAPSHOT_ISOLATION_STATE_DESCSnapshot IsolationNA
IS_READ_COMMITTED_SNAPSHOT_ONRead Committed Snapshot (0/1: 1 = on)BOOLEAN
IS_TRUSTWORTHY_ONTrustworthy (0/1: 1 = on)BOOLEAN
IS_BROKER_ENABLEDService Broker Enabled (0/1: 1 = enabled)BOOLEAN

AlwaysOn Databases Configuration (HadrDatabasesConfig) - configuration snapshot, collected every 24 Hr

Section titled “AlwaysOn Databases Configuration (HadrDatabasesConfig) - configuration snapshot, collected every 24 Hr”

Configuration snapshot of AlwaysOn Databases Configuration, captured for configuration history and compliance evaluation rather than for alerting.

ColumnLabelUnitWarningCritical
GROUP_ID (key)Availability Group IDNA
REPLICA_ID (key)Replica IDNA
DATABASE_ID (key)Database IDNA
DATABASE_NAMEDatabase NameNA
IS_LOCALLocal Replica (0/1: 1 = this instance)BOOLEAN
IS_PRIMARY_REPLICAPrimary Replica (0/1: 1 = primary)BOOLEAN
SYNCHRONIZATION_STATE_DESCSynchronization StateNA
SYNCHRONIZATION_HEALTH_DESCSynchronization HealthNA
IS_SUSPENDEDSuspended (0/1: 1 = data movement suspended)BOOLEAN

SQL Server Locks (SQLServerLock) - collected every 15 Min

Section titled “SQL Server Locks (SQLServerLock) - collected every 15 Min”

Lock counts aggregated by resource type, request mode and status, from sys.dm_tran_locks - the shape of current locking rather than individual locks.

ColumnLabelUnitWarningCritical
resource_type (key)Resource TypeNA
request_mode (key)Request ModeNA
request_status (key)Request Status (GRANTWAITCONVERT…)
lock_countLock CountNA

Blocked Sessions History (BlockedSessionHistory) - collected every 15 Min

Section titled “Blocked Sessions History (BlockedSessionHistory) - collected every 15 Min”

Blocked requests with both sides of each block on one row - blocked and blocking session, the SQL text of both, how long the blocked request has waited in milliseconds, the wait type and the resource waited on (which says whether the block is on a table, an index, a page or a row), the database, login, host and program for both sides, and the session at the head of the blocking chain. The Blocking page shows it live and over a range you choose. Request Start Time separates one blocked request from the next when a session is blocked again. Empty when nothing is blocked, which is the normal state.

ColumnLabelUnitWarningCritical
session_id (key)Blocked Session IDNA
request_id (key)Request IDNA
request_start_timeRequest Start TimeNA
blocking_session_idBlocking Session IDNA
head_blocker_session_idHead Blocker Session IDNA
blocker_is_headBlocker Is Head of ChainNA
wait_typeWait TypeNA
wait_timeBlocked Time (ms)MILLISECONDS
wait_resourceWait ResourceNA
database_nameDatabaseNA
login_nameBlocked LoginNA
host_nameBlocked HostNA
program_nameBlocked ProgramNA
blocking_login_nameBlocking LoginNA
blocking_host_nameBlocking HostNA
blocking_program_nameBlocking ProgramNA
sql_textBlocked SQL TextNA
blocking_sql_textBlocking SQL TextNA

Current lock requests from sys.dm_tran_locks - the session holding or waiting, the resource and its subtype, the requested mode, and the request status - one row per key. Locks that share a key are merged into one row: Resource Description reads N locks when their descriptions differ (for example many row locks of one session on one index) and the shared description followed by (N locks) when they are the same, and Database or Resource Subtype reads (several databases) or (several subtypes) when the merged locks differ. A row standing for one lock keeps that lock’s own description. lock_count carries the number of locks in the row as a number.

ColumnLabelUnitWarningCritical
session_id (key)Session IDNA
resource_type (key)Resource TypeNA
resource_associated_entity_id (key)Resource Entity IDNA
database_nameDatabaseNA
resource_subtypeResource SubtypeNA
request_mode (key)Request ModeNA
request_typeRequest TypeNA
request_status (key)Request Status (GRANTWAITCONVERT…)
resource_descriptionResource DescriptionNA
lock_countLock Count (locks merged into this row)NA

Top Queries by CPU (TopQueriesCpu) - collected every 15 Min

Section titled “Top Queries by CPU (TopQueriesCpu) - collected every 15 Min”

Top cached statements by total CPU (worker) time, from sys.dm_exec_query_stats with the statement text - executions, total and average worker time, elapsed time, and logical and physical I/O. These are the correct top 500, but they are stored UNORDERED: EM keys metric rows and does not preserve the query’s ranking, so sort client-side rather than trusting the order you receive.

ColumnLabelUnitWarningCritical
sql_handle (key)SQL HandleNA
plan_handle (key)Plan HandleNA
statement_start_offset (key)Statement OffsetNA
statement_end_offset (key)Statement End OffsetNA
execution_countExecutions (Cumulative)NA
total_worker_timeCumulative CPU (us)MICROSEC
avg_worker_timeAvg CPU per Execution (us)MICROSEC
total_elapsed_timeCumulative Elapsed (us)MICROSEC
total_logical_readsLogical Reads (Cumulative)NA
total_physical_readsPhysical Reads (Cumulative)NA
total_logical_writesLogical Writes (Cumulative)NA
last_execution_timeLast Execution (retired, always blank)NA
sql_textSQL TextNA
query_hashQuery HashNA
query_plan_hashQuery Plan HashNA
interval_execution_countExecutions (Interval)NA
interval_worker_timeCPU (Interval)MICROSEC
interval_elapsed_timeElapsed (Interval)MICROSEC
interval_logical_readsLogical Reads (Interval)NA
interval_physical_readsPhysical Reads (Interval)NA
interval_logical_writesLogical Writes (Interval)NA
total_grant_mbGranted Memory (Cumulative)MB
max_grant_mbMax Granted MemoryMB
total_used_grant_mbUsed Memory (Cumulative)MB
max_used_grant_mbMax Used MemoryMB
interval_grant_mbGranted Memory (Interval)MB
interval_secondsInterval LengthSECOND
query_plan_hash_idPlan Hash ID (low 48 bits of Query Plan Hash)NA
last_execution_epochLast Execution (seconds since 1970, server clock)NA

Top Queries by Executions (TopQueriesExec) - collected every 15 Min

Section titled “Top Queries by Executions (TopQueriesExec) - collected every 15 Min”

The same statement statistics as Top Queries by CPU, ranked by execution count instead - the queries that run most often rather than the ones that cost most per run. Stored unordered for the same reason; sort client-side.

ColumnLabelUnitWarningCritical
sql_handle (key)SQL HandleNA
plan_handle (key)Plan HandleNA
statement_start_offset (key)Statement OffsetNA
statement_end_offset (key)Statement End OffsetNA
execution_countExecutions (Cumulative)NA
total_worker_timeCumulative CPU (us)MICROSEC
avg_worker_timeAvg CPU per Execution (us)MICROSEC
total_elapsed_timeCumulative Elapsed (us)MICROSEC
total_logical_readsLogical Reads (Cumulative)NA
total_physical_readsPhysical Reads (Cumulative)NA
total_logical_writesLogical Writes (Cumulative)NA
last_execution_timeLast Execution (retired, always blank)NA
sql_textSQL TextNA
query_hashQuery HashNA
query_plan_hashQuery Plan HashNA
interval_execution_countExecutions (Interval)NA
interval_worker_timeCPU (Interval)MICROSEC
interval_elapsed_timeElapsed (Interval)MICROSEC
interval_logical_readsLogical Reads (Interval)NA
interval_physical_readsPhysical Reads (Interval)NA
interval_logical_writesLogical Writes (Interval)NA
total_grant_mbGranted Memory (Cumulative)MB
max_grant_mbMax Granted MemoryMB
total_used_grant_mbUsed Memory (Cumulative)MB
max_used_grant_mbMax Used MemoryMB
interval_grant_mbGranted Memory (Interval)MB
interval_secondsInterval LengthSECOND
last_execution_epochLast Execution (seconds since 1970, server clock)NA

Top Queries by Memory Grant (TopQueriesMemory) - collected every 15 Min

Section titled “Top Queries by Memory Grant (TopQueriesMemory) - collected every 15 Min”

The same statement statistics as Top Queries by CPU, ranked by total granted memory instead - which queries the optimizer reserved the most workspace memory for, in megabytes, alongside the peak single grant and how much of it was actually used. The grant columns are blank on builds before SQL Server 2016 SP2 / 2017 CU3, which do not carry them, and on those builds this group falls back to CPU ordering. Stored unordered like the other top-N groups; sort client-side.

ColumnLabelUnitWarningCritical
sql_handle (key)SQL HandleNA
plan_handle (key)Plan HandleNA
statement_start_offset (key)Statement OffsetNA
statement_end_offset (key)Statement End OffsetNA
execution_countExecutions (Cumulative)NA
total_worker_timeCumulative CPU (us)MICROSEC
avg_worker_timeAvg CPU per Execution (us)MICROSEC
total_elapsed_timeCumulative Elapsed (us)MICROSEC
total_logical_readsLogical Reads (Cumulative)NA
total_physical_readsPhysical Reads (Cumulative)NA
total_logical_writesLogical Writes (Cumulative)NA
last_execution_timeLast Execution (retired, always blank)NA
sql_textSQL TextNA
query_hashQuery HashNA
query_plan_hashQuery Plan HashNA
interval_execution_countExecutions (Interval)NA
interval_worker_timeCPU (Interval)MICROSEC
interval_elapsed_timeElapsed (Interval)MICROSEC
interval_logical_readsLogical Reads (Interval)NA
interval_physical_readsPhysical Reads (Interval)NA
interval_logical_writesLogical Writes (Interval)NA
total_grant_mbGranted Memory (Cumulative)MB
max_grant_mbMax Granted MemoryMB
total_used_grant_mbUsed Memory (Cumulative)MB
max_used_grant_mbMax Used MemoryMB
interval_grant_mbGranted Memory (Interval)MB
interval_secondsInterval LengthSECOND
last_execution_epochLast Execution (seconds since 1970, server clock)NA

Query Plan Statistics (QueryPlanStatistics) - collected every 15 Min

Section titled “Query Plan Statistics (QueryPlanStatistics) - collected every 15 Min”

Cached execution plans aggregated per plan handle - how many statements the plan covers, executions, and the CPU, elapsed and I/O totals attributable to it. The top 500 by total CPU, stored UNORDERED like the other top-N groups; sort client-side.

ColumnLabelUnitWarningCritical
plan_handle (key)Plan HandleNA
statement_countStatement CountNA
execution_countExecutions (Cumulative)NA
total_worker_timeCumulative CPU (us)MICROSEC
total_elapsed_timeCumulative Elapsed (us)MICROSEC
total_logical_readsLogical Reads (Cumulative)NA
total_physical_readsPhysical Reads (Cumulative)NA
total_logical_writesLogical Writes (Cumulative)NA
last_execution_timeLast Execution (retired, always blank)NA
query_hashQuery HashNA
query_plan_hashQuery Plan HashNA
interval_execution_countExecutions (Interval)NA
interval_worker_timeCPU (Interval)MICROSEC
interval_elapsed_timeElapsed (Interval)MICROSEC
interval_logical_readsLogical Reads (Interval)NA
interval_physical_readsPhysical Reads (Interval)NA
interval_logical_writesLogical Writes (Interval)NA
total_grant_mbGranted Memory (Cumulative)MB
max_grant_mbMax Granted MemoryMB
total_used_grant_mbUsed Memory (Cumulative)MB
max_used_grant_mbMax Used MemoryMB
interval_grant_mbGranted Memory (Interval)MB
interval_secondsInterval LengthSECOND
last_execution_epochLast Execution (seconds since 1970, server clock)NA

Top Sessions (TopSessions) - collected every 15 Min

Section titled “Top Sessions (TopSessions) - collected every 15 Min”

The busiest sessions from sys.dm_exec_sessions - login, host, program, status, CPU and memory use, scheduled and elapsed time, and logical and physical I/O. The top 500 by CPU, stored UNORDERED like the other top-N groups; sort client-side.

ColumnLabelUnitWarningCritical
session_id (key)Session IDNA
login_nameLoginNA
host_nameHostNA
program_nameProgramNA
statusSession Status (runningsleepingdormantpreconnect)
cpu_timeCPU Time (ms)MILLISECONDS
memory_usageMemory (pages)NA
total_scheduled_timeScheduled Time (ms)MILLISECONDS
total_elapsed_timeTotal Elapsed (ms)MILLISECONDS
logical_readsLogical ReadsNA
readsReadsNA
writesWritesNA
database_nameDatabaseNA
last_request_start_timeLast Request StartNA

Index Fragmentation (IndexFragmentation) - collected every 360 Min

Section titled “Index Fragmentation (IndexFragmentation) - collected every 360 Min”

Average fragmentation percentage and page count per index partition and allocation unit, from sys.dm_db_index_physical_stats in LIMITED mode, for every index of 1,000 pages or more in total. Every partition and allocation unit of such an index is listed so its size is whole; fragmentation is blank on a unit under 1,000 pages, where it is not meaningful. Collected on a long schedule because the scan is not free.

ColumnLabelUnitWarningCritical
database_name (key)DatabaseNA
schema_name (key)SchemaNA
table_name (key)TableNA
index_name (key)IndexNA
partition_number (key)PartitionNA
alloc_unit_type_desc (key)Alloc Unit Type (IN_ROW_DATALOB_DATAROW_OVERFLOW_DATA)NA
index_idIndex IDNA
index_type_descIndex Type (CLUSTERED INDEXNONCLUSTERED INDEXHEAP…)
avg_fragmentation_in_percentFragmentation %PERCENTAGE
page_countPage CountNA

Index Usage (IndexUsage) - collected every 60 Min

Section titled “Index Usage (IndexUsage) - collected every 60 Min”

How each index is actually used, from sys.dm_db_index_usage_stats - seeks, scans, lookups and updates, with the timestamps of the last of each. An index with updates and no reads is a maintenance cost with no return.

ColumnLabelUnitWarningCritical
database_name (key)DatabaseNA
schema_name (key)SchemaNA
table_name (key)TableNA
index_name (key)IndexNA
index_idIndex IDNA
user_seeksUser SeeksNA
user_scansUser ScansNA
user_lookupsUser LookupsNA
user_updatesUser UpdatesNA
last_user_seekLast SeekNA
last_user_scanLast ScanNA
last_user_updateLast UpdateNA

Missing Indexes (MissingIndex) - collected every 60 Min

Section titled “Missing Indexes (MissingIndex) - collected every 60 Min”

Indexes the optimizer wanted and did not find, from the missing-index DMVs - the table, the equality, inequality and included columns, the seeks and scans that would have used it, the average user impact, and a derived improvement measure for ranking. The Create Index dialog on the Indexes page acts on these rows.

ColumnLabelUnitWarningCritical
group_handle (key)Group HandleNA
database_nameDatabaseNA
table_statementTableNA
equality_columnsEquality ColumnsNA
inequality_columnsInequality ColumnsNA
included_columnsIncluded ColumnsNA
unique_compilesUnique CompilesNA
user_seeksUser SeeksNA
user_scansUser ScansNA
avg_total_user_costAvg CostNA
avg_user_impactAvg Impact %PERCENTAGE
improvement_measureImprovement MeasureNA

Wait Type History (WaitTypeHistory) - collected every 15 Min

Section titled “Wait Type History (WaitTypeHistory) - collected every 15 Min”

Wait statistics per wait type from sys.dm_os_wait_stats. The task count, wait time and the signal/resource split are PER-INTERVAL deltas against the previous collection, not lifetime totals - the DMV accumulates since server start, and differencing it at collection is what lets a wait type that stopped waiting show as quiet. Maximum wait time is a gauge. Blank on the first collection and after a restart; interval_seconds states the window each row covers.

ColumnLabelUnitWarningCritical
wait_type (key)Wait TypeNA
waiting_tasks_countWaiting Tasks (Interval)NA
wait_time_msWait Time (Interval, ms)MILLISECONDS
max_wait_time_msMax Wait (ms)MILLISECONDS
signal_wait_time_msSignal Wait (Interval, ms)MILLISECONDS
resource_wait_time_msResource Wait (Interval, ms)MILLISECONDS
interval_secondsInterval LengthSECOND

File I/O Statistics (FileIoStats) - collected every 15 Min

Section titled “File I/O Statistics (FileIoStats) - collected every 15 Min”

Per-file I/O from sys.dm_io_virtual_file_stats. Read and write counts, bytes and stall times are PER-INTERVAL deltas against the previous collection, so an increase or decrease in a file’s I/O between snapshots is visible directly; size on disk is a gauge. Blank on the first collection and after a restart; interval_seconds states the window each row covers.

ColumnLabelUnitWarningCritical
database_id (key)Database IDNA
database_nameDatabaseNA
file_id (key)File IDNA
logical_nameLogical NameNA
physical_namePhysical NameNA
file_typeFile Type (ROWSLOGFILESTREAMFULLTEXT)
num_of_readsReads (Interval)NA
num_of_writesWrites (Interval)NA
num_of_bytes_readBytes Read (Interval)BYTE
num_of_bytes_writtenBytes Written (Interval)BYTE
io_stall_read_msRead Stall (Interval, ms)MILLISECONDS
io_stall_write_msWrite Stall (Interval, ms)MILLISECONDS
io_stallTotal Stall (Interval, ms)MILLISECONDS
size_on_disk_mbSize on Disk (MB)MB
interval_secondsInterval LengthSECOND
avg_read_latency_msAvg Read Latency (Interval, ms)MILLISECONDS> 50> 100
avg_write_latency_msAvg Write Latency (Interval, ms)MILLISECONDS> 50> 100

Database IOPS (DatabaseIops) - collected every 15 Min

Section titled “Database IOPS (DatabaseIops) - collected every 15 Min”

The same virtual file statistics rolled up per database, giving read, write and total I/O counts, bytes, and stall times without the per-file detail. All of them are PER-INTERVAL deltas against the previous collection; interval_seconds states the window each row covers, and the console divides by it to chart per-second rates. Blank on the first collection and after a restart.

ColumnLabelUnitWarningCritical
database_id (key)Database IDNA
database_nameDatabaseNA
num_of_readsReads (Interval)NA
num_of_writesWrites (Interval)NA
num_of_iosTotal I/Os (Interval)NA
num_of_bytes_readBytes Read (Interval)BYTE
num_of_bytes_writtenBytes Written (Interval)BYTE
io_stall_read_msRead Stall (Interval, ms)MILLISECONDS
io_stall_write_msWrite Stall (Interval, ms)MILLISECONDS
io_stallTotal Stall (Interval, ms)MILLISECONDS
interval_secondsInterval LengthSECOND

SQL Server Backups (Backups) - collected every 60 Min

Section titled “SQL Server Backups (Backups) - collected every 60 Min”

Backup history from msdb - one row per backup set with type, start and finish times, raw and compressed size, recovery model, copy-only flag, and who ran it. This is the trending source; Last Database Backup is the current-state one.

ColumnLabelUnitWarningCritical
backup_set_id (key)Backup Set IDNA
media_set_idMedia Set IDNA
database_nameDatabaseNA
backup_typeBackup Type (D = full, I = diff, L = log, F = file, …)NA
backup_start_dateStart DateNA
backup_finish_dateFinish DateNA
backup_size_bytesBackup Size (bytes)BYTE
compressed_backup_size_bytesCompressed Size (bytes)BYTE
user_nameUser NameNA
recovery_modelRecovery Model (SIMPLEFULLBULK_LOGGED)NA
is_copy_onlyCopy Only (0/1: 1 = copy-only backup)BOOLEAN
server_nameServer NameNA
machine_nameMachine NameNA
backup_set_nameBackup Set NameNA

Last Database Backup (LastDatabaseBackup) - collected every 60 Min

Section titled “Last Database Backup (LastDatabaseBackup) - collected every 60 Min”

The most recent backup per database with its age in both days and hours, the last full and last log backup dates, and the recovery model. hours_since_last_backup carries the RPO threshold and is EMPTY for a database that has never been backed up - that state is reported by never_backed_up (1 or 0) and by hours_unbacked, which holds how long such a database has existed and carries the RPO threshold for the never case. hours_unbacked is blank for a database that has a backup (Never Backed Up = 0). For master and model the age runs from 2003-04-08, the create date SQL Server ships in their template, not from when the instance was installed. days_since_last_backup reports -1 for it, which the console renders as Never.

ColumnLabelUnitWarningCritical
database_name (key)DatabaseNA
days_since_last_backupDays Since Last Backup (-1 = never backed up)DAYS
last_backup_dateLast Backup DateNA
last_backup_typeLast Backup Type (D = full, I = diff, L = log, blank = none)NA
last_full_backup_dateLast Full Backup DateNA
last_log_backup_dateLast Log Backup DateNA
recovery_model_descRecovery Model (SIMPLEFULLBULK_LOGGED)NA
hours_since_last_backupHours Since Last Backup (blank if Never Backed Up = 1)HOURS> 48> 168
never_backed_upNever Backed Up (0/1: 1 = no backup on record)BOOLEAN
hours_unbackedHours Unbacked (blank if Never Backed Up = 0; master/model 2003)HOURS> 48> 168

Transaction Log Space (TransactionLog) - collected every 30 Min

Section titled “Transaction Log Space (TransactionLog) - collected every 30 Min”

Per-database transaction log size and the percentage of log space used, which carries a threshold - a log filling up is the common cause of a database becoming unwritable.

ColumnLabelUnitWarningCritical
database_name (key)DatabaseNA
log_size_mbLog Size (MB)MB
log_space_used_pctLog Space Used (%)PERCENTAGE> 75> 90
log_space_available_pctLog Space Available (%)PERCENTAGE

Database I/O By Type (DatabaseIoByType) - collected every 15 Min

Section titled “Database I/O By Type (DatabaseIoByType) - collected every 15 Min”

Per-database I/O split by file type, so data-file and log-file activity can be told apart - the log is the write-latency-sensitive half. The I/O counters are PER-INTERVAL deltas against the previous collection; size on disk is a gauge. Blank on the first collection and after a restart; interval_seconds states the window each row covers.

ColumnLabelUnitWarningCritical
database_id (key)Database IDNA
database_nameDatabaseNA
file_type (key)File Type (ROWSLOGFILESTREAMFULLTEXT)
num_of_readsReads (Interval)NA
num_of_writesWrites (Interval)NA
num_of_iosTotal I/Os (Interval)NA
num_of_bytes_readBytes Read (Interval)BYTE
num_of_bytes_writtenBytes Written (Interval)BYTE
io_stall_read_msRead Stall (Interval, ms)MILLISECONDS
io_stall_write_msWrite Stall (Interval, ms)MILLISECONDS
io_stallTotal Stall (Interval, ms)MILLISECONDS
size_on_disk_mbSize on Disk (MB)MB
interval_secondsInterval LengthSECOND
avg_read_latency_msAvg Read Latency (Interval, ms)MILLISECONDS
avg_write_latency_msAvg Write Latency (Interval, ms)MILLISECONDS

SQL Server Processes (Processes) - collected every 15 Min

Section titled “SQL Server Processes (Processes) - collected every 15 Min”

Current sessions and requests - blocking session, CPU time, program and command, login time, execution state, and the current wait type and wait time.

ColumnLabelUnitWarningCritical
session_id (key)Session IDNA
blocking_session_idBlocking Session IDNA
cpu_time_msCPU Time (ms)MILLISECONDS
program_nameProgram NameNA
commandCommandNA
login_timeLogin TimeNA
database_nameDatabaseNA
execution_stateExecution State (runningrunnablesuspendedsleeping)
host_nameHost NameNA
login_nameLogin NameNA
memory_usage_pagesMemory Usage (pages)NA
process_stateSession State (runningsleepingdormantpreconnect)
wait_typeWait TypeNA
wait_time_msWait Time (ms)MILLISECONDS

Server-level principals from sys.server_principals - type, whether disabled, creation and modification dates, and the default database and language.

ColumnLabelUnitWarningCritical
name (key)Login NameNA
type_codeType CodeNA
type_descLogin Type (SQL_LOGINWINDOWS_LOGINWINDOWS_GROUP…)
is_disabledLogin Disabled (0/1: 1 = disabled)BOOLEAN
create_dateCreatedNA
modify_dateModifiedNA
default_database_nameDefault DatabaseNA
default_language_nameDefault LanguageNA

Database Users (User) - collected every 60 Min

Section titled “Database Users (User) - collected every 60 Min”

Database-level principals per database - type, whether it is a system user, creation date, default schema, and authentication type.

ColumnLabelUnitWarningCritical
database_name (key)DatabaseNA
name (key)User NameNA
type_descUser Type (SQL_USERWINDOWS_USERWINDOWS_GROUP…)
is_systemSystem Object (0/1: 1 = system user)BOOLEAN
create_dateCreatedNA
default_schema_nameDefault SchemaNA
authentication_type_descAuthentication Type (NONEINSTANCEDATABASEWINDOWS)

SQL Server Agent Status (AgentStatus) - collected every 5 Min

Section titled “SQL Server Agent Status (AgentStatus) - collected every 5 Min”

SQL Server Agent service state - the running status, start mode, last startup time, and the service account. Collected on a short schedule because an Agent that is not running silently stops every scheduled job.

ColumnLabelUnitWarningCritical
server_nameServer NameNA
service_name (key)Service NameNA
process_idProcess IDNA
service_pathService PathNA
agent_statusAgent Status (RunningStoppedPaused…)
agent_start_modeStart ModeNA
last_startup_timeLast Startup TimeNA
service_accountService AccountNA

License (License) - collected every 60 Min

Section titled “License (License) - collected every 60 Min”

Licence state of this plug-in installation, not of the SQL Server instance - the collection contacts neither the database nor the OMS. license_status carries the reason (Active, Expired, Wrong Product, Invalid Signature, License Required, Exceeded Limit, Instance Count Unavailable); the threshold is set on days_remaining, which is only a real countdown for Active and Expired.

ColumnLabelUnitWarningCritical
customer (key)CustomerNA
license_typeLicense TypeNA
expirationExpirationNA
instancesLicensed InstancesNA
days_remainingDays Remaining (36500 = no countdown; see License Status)days< 30< 7
license_statusLicense Status (ActiveExpiredLicense Required…)

Collector Status (CollectorStatus) - collected every 5 Min

Section titled “Collector Status (CollectorStatus) - collected every 5 Min”

Why each metric group of this target is empty or failing, one row per group, so an empty group can be told apart from a feature that is not set up, a group that has not run yet and a collection that is failing. Status is one word from a closed set shared with the other Integration Plumbers plug-ins - OK, NOT_CONFIGURED, NOT_COLLECTED_YET, NO_DATA, COLLECTION_ERROR, DISABLED - with the reason in plain text, the rows the last run returned, and the last attempt as LastAttemptEpoch, UTC seconds since 1970, blank for a group that has never run. LastAttempt is retired and always blank: as a timestamp string it changed on every run and filled the repository’s string history. The critical alert fires when a group still reads COLLECTION_ERROR after two consecutive 5-minute checks and clears on the group’s next successful run. See the user guide, chapter 9.

ColumnLabelUnitWarningCritical
MetricGroup (key)Metric Group This Row DescribesNA
StatusStatus (OKNOT_CONFIGUREDNOT_COLLECTED_YETNO_DATA
ReasonReason for the Status (plain text; error if COLLECTION_ERROR)NA
LastAttemptLast Collection Attempt (retired, always blank)NA
RowsReturnedRows Returned by the Last Collection Attempt (count)NA
LastAttemptEpochLast Collection Attempt (Unix epoch seconds; blank/0 = never)NA

SQL Server Agent Jobs (DatabaseJob) - collected every 60 Min

Section titled “SQL Server Agent Jobs (DatabaseJob) - collected every 60 Min”

SQL Server Agent job definitions and outcomes from msdb - whether the job is enabled, its owner and category, the step count, and the last run’s date, time and outcome. has_run is 1 once the job has run and 0 before; the date and time are blank until then.

ColumnLabelUnitWarningCritical
job_id (key)Job IDNA
nameJob NameNA
enabledJob Enabled (0/1: 1 = enabled)BOOLEAN
descriptionJob DescriptionNA
ownerOwnerNA
categoryCategoryNA
date_createdCreatedNA
date_modifiedModifiedNA
version_numberVersionNA
last_run_dateLast Run Date (yyyymmdd; blank if Has Run = 0)NA
last_run_timeLast Run Time (hhmmss; blank if Has Run = 0)NA
last_run_outcomeRun Outcome (0=fail, 1=ok, 3=cancel, 5=unknown/never, -1=none)NA
number_of_stepsNumber of StepsNA
has_runHas Run (0/1: 1 = ran at least once)BOOLEAN

Error Log Entries (ErrorLog) - collected every 15 Min

Section titled “Error Log Entries (ErrorLog) - collected every 15 Min”

Recent SQL Server error log entries with their timestamp and process context. Keyed by timestamp and sequence so repeated messages in the same second stay distinct. log_epoch carries the timestamp as seconds since 1970 on the server’s clock.

ColumnLabelUnitWarningCritical
log_date (key)Log DateNA
process_infoProcess InfoNA
error_textError Log MessageNA
seq (key)SequenceNA
log_epochLog Time (seconds since 1970, server clock)NA

SQL Instance Statistics (SqlInstanceStats) - collected every 60 Min

Section titled “SQL Instance Statistics (SqlInstanceStats) - collected every 60 Min”

Instance-wide size rollup - database counts and the combined data, log and total file sizes across every database.

ColumnLabelUnitWarningCritical
combined_file_size_mbCombined File Size (MB)MB
number_of_databasesNumber of DatabasesNA
number_of_user_databasesNumber of User DatabasesNA
combined_data_size_mbCombined Data Size (MB)MB
combined_log_size_mbCombined Log Size (MB)MB

Deadlock Rate (DeadlockRate) - collected every 15 Min

Section titled “Deadlock Rate (DeadlockRate) - collected every 15 Min”

Deadlock counts from the system_health extended-events session - the trailing hour and day, the total in the current file, and how long since the last one. The hourly count carries a threshold.

ColumnLabelUnitWarningCritical
deadlocks_last_hourDeadlocks (Last Hour)NA> 5> 20
deadlocks_last_dayDeadlocks (Last 24h)NA
deadlocks_in_fileDeadlocks (In Event File)NA
minutes_since_last_deadlockMinutes Since Last Deadlock (blank if In Event File = 0)MINUTES

Recent Deadlocks (RecentDeadlocks) - collected every 15 Min

Section titled “Recent Deadlocks (RecentDeadlocks) - collected every 15 Min”

The recent deadlock list parsed out of the system_health event file - event time, how many processes and resources took part, and the victim’s identifiers. One row per deadlock graph.

ColumnLabelUnitWarningCritical
event_time_utc (key)Deadlock Time (UTC)NA
process_countProcessesNA
resource_countResourcesNA
victim_process_idVictim ProcessNA
victim_spidVictim SPIDNA
victim_database_nameVictim DatabaseNA

Blocked Sessions (BlockedSessions) - collected every 5 Min

Section titled “Blocked Sessions (BlockedSessions) - collected every 5 Min”

The current count of blocked requests as a single number, collected on a short schedule so it can be alerted on and charted. Carries a threshold.

ColumnLabelUnitWarningCritical
blocked_sessionsBlocked SessionsNA> 5> 20

Connection Saturation (ConnectionSaturation) - collected every 5 Min

Section titled “Connection Saturation (ConnectionSaturation) - collected every 5 Min”

User connections as a percentage of the instance’s effective connection cap, so the alert fires on the ratio rather than on a raw count that means different things on different instances.

ColumnLabelUnitWarningCritical
user_connectionsUser ConnectionsNA
max_connectionsMax ConnectionsNA
connection_saturation_pctConnection Saturation (%)PERCENTAGE> 80> 90

TempDB Contention (TempdbContention) - collected every 5 Min

Section titled “TempDB Contention (TempdbContention) - collected every 5 Min”

TempDB PAGELATCH contention with the page type classified by the engine rather than guessed from the page number - total and exclusive-mode waiters, the allocation-page (PFS/GAM/SGAM) and metadata-page splits, the longest current wait, and a plain-language advice string. The allocation and metadata splits require DMVs added in SQL Server 2019 and report zero on 2016 and 2017; read those zeros as not-classifiable-here rather than as nothing-to-report.

ColumnLabelUnitWarningCritical
pagelatch_waitersPAGELATCH WaitersNA
pagelatch_ex_waitersPAGELATCH_EX WaitersNA> 5> 20
allocation_page_waitersAllocation-Page Waiters (PFS/GAM/SGAM)NA
metadata_page_waitersMetadata-Page WaitersNA
max_wait_msMax Wait (ms)MILLISECONDS
adviceAdviceNA

Worst Query CPU (WorstQueryCpu) - collected every 15 Min

Section titled “Worst Query CPU (WorstQueryCpu) - collected every 15 Min”

Instance-wide worst-query costs as one numeric row per collection, which is what the Current Queries page history chart is drawn from. The three CPU columns are each the maximum of their own measure, so they may describe different statements; use the tables on that page to identify which.

ColumnLabelUnitWarningCritical
worst_query_cpu_msWorst Query CPU, Cumulative While Cached (ms)MILLISECONDS
worst_query_avg_cpu_msWorst Query CPU per Execution (ms)MILLISECONDS
worst_query_max_cpu_msWorst Query CPU, Slowest Execution (ms)MILLISECONDS
cached_statementsCached StatementsNA
cached_executionsCached ExecutionsNA

Associated Services (AssociatedServices) - collected every 5 Min

Section titled “Associated Services (AssociatedServices) - collected every 5 Min”

The services this SQL Server instance reports - the running status, start mode, process id and service account for each. On Windows this is the database engine, the Agent and the Full-text Filter Daemon Launcher; on Linux only the Agent is reported. Services that belong to Windows rather than to SQL Server, such as the Browser and the VSS Writer, are not included.

ColumnLabelUnitWarningCritical
service_name (key)ServiceNA
service_statusService Status (RunningStoppedPaused…)
start_modeStart ModeNA
process_idProcess IDNA
service_accountService AccountNA
last_startup_timeLast Startup TimeNA
service_pathService PathNA

Database Composition (DatabaseComposition) - collected every 24 Hr

Section titled “Database Composition (DatabaseComposition) - collected every 24 Hr”

What each database’s space is actually holding, rather than how full it is: data, indexes, reserved-but-unused and unallocated space, plus the transaction log used and its size. The page arithmetic is sp_spaceused’s own, so the figures match what SQL Server reports directly.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
data_kbData (KB)KB
index_kbIndexes (KB)KB
unused_kbReserved but Unused (KB)KB
unallocated_kbUnallocated (KB)KB
log_used_kbTransaction Log Used (KB)KB
log_allocated_kbTransaction Log Size (KB)KB

Security Update Status (SecurityUpdateStatus) - collected every 60 Min

Section titled “Security Update Status (SecurityUpdateStatus) - collected every 60 Min”

The instance’s build against Microsoft’s security updates for its version and servicing path (CU or GDR), from a reference table shipped with the plug-in and refreshed each release - reference_as_of says how current it is, and a Current verdict more than 45 days past it reads Reference Stale. required_build and required_update name the latest release to install; days_behind counts from the OLDEST security release the instance lacks, which oldest_missed_update and oldest_missed_release_date name, and carries the threshold (Warning 30, Critical 90). For a build older than every release in the table the count starts at the table’s first release, so it is a minimum and oldest_missed_update says or earlier. days_behind and security_update_missing are blank for a version outside the table rather than reading as patched; version_judged is always 0 or 1, so a reader that turns a blank number into 0 (the EM MCP server does) can still tell an unjudged version from a patched one. SQL Server 2016 reports its final July 2026 updates and, once applied, Final Update Applied, Out of Support.

ColumnLabelUnitWarningCritical
product_versionProduct VersionNA
product_levelProduct LevelNA
product_update_levelInstalled UpdateNA
product_update_referenceInstalled Update KBNA
servicing_pathServicing PathNA
security_statusSecurity Update StatusNA
required_buildRequired BuildNA
required_updateLatest Security UpdateNA
required_release_dateLatest Security Update ReleasedNA
security_update_missingSecurity Update Missing (0/1: 1 = behind latest)BOOLEAN
days_behindDays Since Oldest Missed Security Updatedays>= 30>= 90
reference_as_ofReference Data As OfNA
oldest_missed_updateOldest Missed Security UpdateNA
oldest_missed_release_dateOldest Missed Security Update ReleasedNA
version_judgedVersion Judged (0/1: 0 = not in the reference table)BOOLEAN

Query Store Status (QueryStoreStatus) - collected every 60 Min

Section titled “Query Store Status (QueryStoreStatus) - collected every 60 Min”

Which user databases Query Store covers, from sys.database_query_store_options - the actual and requested state, capture mode, statistics interval, retention, storage used against the maximum, and the number of queries and plans held. actual_state is 0 off, 1 read-only, 2 read-write. The Query Store groups read only databases where it is not 0; the plan-cache groups above cover every database regardless. Empty before SQL Server 2016.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
actual_stateQuery Store State (0 = off, 1 = read-only, 2 = read-write)NA
actual_state_descQuery Store State (OFFREAD_ONLYREAD_WRITEERROR)
desired_state_descRequested State (OFFREAD_ONLYREAD_WRITE)NA
readonly_reasonRead-Only Reason (code, 0 = not read-only)NA
capture_mode_descCapture Mode (ALLAUTONONECUSTOM)
stats_interval_minutesStatistics Interval Length (minutes)MINUTES
stale_daysRetention (days, stale query threshold)DAYS
max_size_mbMaximum Store Size (MB)MB
used_size_mbStore Size Used (MB)MB
flush_secondsFlush Interval (seconds)SECOND
query_countQueries in Store (count, 0 when off)NA
plan_countPlans in Store (count, 0 when off)NA

Query Store Plan Statistics per Interval (QueryStorePlanStats) - collected every 15 Min

Section titled “Query Store Plan Statistics per Interval (QueryStorePlanStats) - collected every 15 Min”

Per-interval runtime statistics per plan read from Query Store - executions, aborted executions, CPU, duration and reads per closed Query Store interval, so history survives plan-cache eviction and restarts. Each closed interval is stored exactly once (each run reads the intervals that closed since the previous run, on the server’s clock), so sums over any range are exact; the first collection, and the first after the cache file is lost, stores nothing and starts the window, so no interval is stored twice. Top 300 (query, plan) pairs by CPU per interval; the plug-in’s own collection statements are excluded. Most 15-minute collections are empty, because rows arrive only when an interval closes (60 minutes by default). Epochs are UTC seconds.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
query_id (key)Query Store Query IDNA
plan_id (key)Query Store Plan IDNA
interval_start_epoch (key)Interval Start (Interval key, UTC seconds since 1970)NA
interval_minutesInterval LengthMINUTES
executionsExecutions in Interval (completed normally)NA
aborted_executionsAborted or Failed Executions in IntervalNA
total_cpu_usCPU in Interval (us, all executions)MICROSEC
total_duration_usDuration in Interval (us, all executions)MICROSEC
total_logical_readsLogical Reads in Interval (pages)NA
total_physical_readsPhysical Reads in Interval (pages)NA
avg_cpu_usAvg CPU per Execution in Interval (us)MICROSEC
max_cpu_usMax CPU of One Execution in Interval (us)MICROSEC
is_forced_planForced Plan (0/1: 1 = plan is forced)BOOLEAN
query_hashQuery Hash (same format as Top Queries)NA
object_nameModule (schema.name; empty for ad hoc SQL)NA
first_execution_epochFirst Execution in Interval (UTC seconds since 1970)NA
last_execution_epochLast Execution in Interval (UTC seconds since 1970)NA
query_textQuery Text (Query Store statement text)NA

Query Store Plan Regression (QueryStoreRegression) - collected every 15 Min

Section titled “Query Store Plan Regression (QueryStoreRegression) - collected every 15 Min”

Plan regression from Query Store - for each query that ran under more than one plan, its current plan (most recently executed, averaged over the last 24 hours) against its previous plan (the next most recently executed, averaged over Query Store’s retention), with the ratio of their average CPU per execution and of their logical reads. cpu_ratio carries the ships-enabled alert (Warning 2, Critical 5); -1 means no ratio and never alerts: the current plan has under 10 executions in the last 24 hours or averages under 1 ms of CPU, or the previous plan has under 10. Every execution type counts, timed-out runs included. A query that stops running keeps its row at -1 for 7 days, so an open incident clears. A query that goes back to a better plan reads below 1 and clears; when Query Store forgets the previous plan the row disappears, and an incident still open on it must be cleared by hand.

ColumnLabelUnitWarningCritical
database_name (key)Database NameNA
query_id (key)Query Store Query IDNA
plan_countPlans with Executions in Query Store (count)NA
current_plan_idCurrent Plan ID (most recently executed)NA
previous_plan_idPrevious Plan ID (executed before the current one)NA
current_avg_cpu_usCurrent Plan Avg CPU per Execution (us, last 24 h)MICROSEC
previous_avg_cpu_usPrevious Plan Avg CPU per Execution (us)MICROSEC
cpu_ratioCPU Ratio (current / previous avg; -1 = previous was 0)NA>= 2>= 5
reads_ratioLogical Reads Ratio (current / previous; -1 = previous 0)NA
current_executionsCurrent Plan Executions (last 24 h)NA
previous_executionsPrevious Plan Executions (Query Store retention)NA
current_first_seen_epochCurrent Plan First Seen (UTC seconds since 1970)NA
is_forced_planCurrent Plan Forced (0/1: 1 = plan is forced)BOOLEAN
query_hashQuery Hash (same format as Top Queries)NA
query_textQuery Text (first 500 characters)NA