Блокирующие сеансы

Microsoft.SQLServer.2008.DBEngine.BlockedSPIDsMonitor (UnitMonitor)

Отслеживает заблокированные сеансы для экземпляра SQL.

Knowledge Base article:

Сводка

Монитор заблокированных сеансов определяет, существует ли ситуация блокировки.

Блокировка возникает, если один сеанс удерживает блокировку конкретного ресурса, а второй сеанс пытается получить блокировку конфликтующего типа для того же ресурса. Блокировка является неизбежной отличительной чертой любой системы управления реляционными базами данных с параллелизмом на основе блокировок. Однако слишком большое количество блокировок может вызвать снижение производительности.

Причины

Если число блокировок возрастает до уровня, при котором они оказывают существенное воздействие на производительность системы, это происходит по одной из следующих причин.

Решения

Альтернативный вариант, если блокируемые сеансы не связаны с базой данных:

См. также " INF: основные сведения и устранение проблем с блокировками SQL Server"

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.BlockedSPIDs
RemotableTrue
AccessibilityPublic
Alert Message
Заблокировано сеансов
Сеансы {0} в экземпляре SQL Server "{1}" на компьютере "{2}" заблокированы. Дополнительные сведения см. на вкладке "Контекст предупреждения".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.BlockedSPIDsMonitor" Accessibility="Public" Enabled="false" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.BlockedSPIDs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.BlockedSPIDsMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='BlockedSPIDList']$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Blocked" MonitorTypeStateID="Blocked" HealthState="Error"/>
<OperationalState ID="NotBlocked" MonitorTypeStateID="NotBlocked" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ConnectionString>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<WaitMinutes>1</WaitMinutes>
<NumberBlockedSPIDs>1</NumberBlockedSPIDs>
<TimeoutSeconds>300</TimeoutSeconds>
<InstanceName>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</InstanceName>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
</Configuration>
</UnitMonitor>