Improve the health and performance monitoring of your Microsoft SQL Servers.






Monitor SQL Server health and performance using Dynatrace OneAgent extension.
Microsoft SQL Server database monitoring is based on a local monitoring approach implemented as a Dynatrace OneAgent extension. The extension collects Windows Performance Counters for key performance and health metrics from the SQL Server instances running on the host.
Performance counters can only be collected with a user that is part of the "Performance Monitor Users" group, however The Dynatrace Extensions Execution Controller (EEC) runs python extensions as 'LOCAL SERVICE' by default and so cannot query them.
You need to configure the Dynatrace OneAgent EEC to run this extension with elevated 'LOCAL SYSTEM' account privleges.
elevated_privileges_extensions configuration option to the extensionsuser.conf file.
C:ProgramData\dynatrace\oneagent\agent\config\extensionsuser.confelevated_privileges_extensions should be a comma separated list of extensions to run as 'LOCAL SYSTEM' (instead of the default 'LOCAL SERVICE'). The format is: <extensionName>:<extensionVersion>
elevated_privileges_extensions=[com.dynatrace.extension.python.wmi.mssql:*]This extension collects performance counter metrics for SQL Server Instances on a host monitored by a Dynatrace OneAgent.
When activating your extension using monitoring configuration, you can limit monitoring to one of the feature sets. To work properly the extension has to collect at least one metric after the activation.
In highly segmented networks, feature sets can reflect the segments of your environment. Then, when you create a monitoring configuration, you can select a feature set and a corresponding ActiveGate group that can connect to this particular segment.
All metrics that aren't categorized into any feature set are considered to be the default and are always reported.
A metric inherits the feature set of a subgroup, which in turn inherits the feature set of a group. Also, the feature set defined on the metric level overrides the feature set defined on the subgroup level, which in turn overrides the feature set defined on the group level.
| Metric name | Metric key | Description |
|---|---|---|
| Latch waits | sql-server.local.latches.waits | Number of latch requests that could not be granted immediately |
| Metric name | Metric key | Description |
|---|---|---|
| Lock waits | sql-server.local.locks.waits | Number of lock requests that required the caller to wait |
| Deadlocks | sql-server.local.locks.deadlocks | Number of lock requests that resulted in a deadlock |
| Metric name | Metric key | Description |
|---|---|---|
| Buffer cache hit | sql-server.local.buffers.cacheHitRatio | Percentage of pages found in the buffer cache without having to read from disk |
| Checkpoint pages | sql-server.local.buffers.checkpointPages | Number of pages flushed to disk by a checkpoint or other operations that require all dirty pages to be flushed |
| Page life expectancy | sql-server.local.buffers.pageLifeExpectancy | Number of seconds a page will stay in the buffer pool without references |
| Metric name | Metric key | Description |
|---|---|---|
| Batch requests | sql-server.local.sql.batchRequests | Number of Transact-SQL command batches received |
| SQL compilations | sql-server.local.sql.compilations | Number of SQL statement compilations |
| SQL re-compilations | sql-server.local.sql.recompilations | Number of SQL statement re-compilations |
| Metric name | Metric key | Description |
|---|---|---|
| Processes blocked | sql-server.local.general.processesBlocked | Number of currently blocked processes |
| Transactions | sql-server.local.general.transactions | Number of transaction enlistments (local, dtc, and bound) |
| User connections | sql-server.local.general.userConnections | Number of users currently connected to SQL Server |
| Metric name | Metric key | Description |
|---|---|---|
| Page splits | sql-server.local.accessMethods.pageSplits | Number of page splits that occur as a result of overflowing index pages |
| Metric name | Metric key | Description |
|---|---|---|
| Connection memory | sql-server.local.memory.connection | Total amount of dynamic memory the server is using for maintaining connections |
| Memory grants outstanding | sql-server.local.memory.grantsOutstanding | Number of processes that have successfully acquired a workspace memory grant |
| Memory grants pending | sql-server.local.memory.grantsPending | Number of processes waiting for a workspace memory grant |
| Target server memory | sql-server.local.memory.target | Amount of memory that can be consumed by memory manager |
| Total server memory | sql-server.local.memory.total | Amount of memory the server has committed using the memory manager |
| Free server memory | sql-server.local.memory.free | Amount of memory available for SQL Server to use. |