Stolen Server Memory

Microsoft.SQLServer.2012.DBEngine.StolenServerMemoryMonitor (UnitMonitor)

Stolen Server Memory for 2012 DB Engine

Knowledge Base article:

Summary

Stolen Server Memory monitor for SQL 2012 DB Engine

Monitors amount of memory the server is currently using for the purposes other than the database pages.

Causes

Resolutions

SQL Server memory pressure external to the buffer pool can be caused by many things, run DBCC MemoryStatus or query sys.dm_os_memory_clerks to identify the problem.

An in-depth look at SQL Server Memory

http://go.microsoft.com/fwlink/?LinkId=789185

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

Error

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

300

Number of samples

Number of samples to average before compare it with threshold

6

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

00:00

Threshold

If the ratio between Stolen Server Memory and SQL Server max memory is greater than this threshold alert will be generated

70

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

200

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.DBEngine.StolenServerMemory.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL DB 2012 Engine Stolen Server Memory is too high
SQL instance "{0}" Stolen Server Memory on computer "{1}" is too high. See "alert context" tab for more details.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.DBEngine.StolenServerMemoryMonitor" Accessibility="Public" Enabled="true" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.DBEngine.StolenServerMemory.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.DBEngine.StolenServerMemoryMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<Threshold>70</Threshold>
<NumSamples>6</NumSamples>
<SyncTime/>
</Configuration>
</UnitMonitor>