Blockierende Sitzungen

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

Überwacht blockierte Sitzungen für eine SQL-Instanz.

Knowledge Base article:

Zusammenfassung

Der Monitor für das Blockieren von Sitzungen erkennt, ob eine Blockierungssituation besteht.

Eine Blockierung tritt auf, wenn eine Sitzung eine bestimmte Ressource sperrt und eine andere Sitzung versucht, für dieselbe Ressource einen in Konflikt stehenden Sperrtyp anzufordern. Die Blockierung ist ein unvermeidliches Merkmal von Managementsystemen für relationale Datenbanken (RDBMS) mit sperrbasierter Parallelität. Zu viele Blockierungen können jedoch zu Leistungsproblemen führen.

Ursachen

Wenn die Anzahl von Sperr- und Blockierungsvorgängen so stark zunimmt, dass die Systemleistung erheblich beeinträchtigt wird, ist dies normalerweise auf eine der folgenden Ursachen zurückzuführen:

Lösungen

Wenn blockierte Sitzungen für die Datenbank nicht relevant sind, haben Sie zudem folgende Möglichkeiten:

Siehe auch: " INF: Verstehen und Lösen von Blockierproblemen in SQL Server"

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Hoch

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Fehler

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Nein

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

300

Anzahl blockierter Sitzungen

Anzahl blockierter Sitzungen.

1

Synchronisierungszeit

Die in einem 24-Stunden-Format angegebene Synchronisierungszeit. Kann ausgelassen werden.

 

Timeout (Sekunden)

Gibt an, wie lange der Workflow ausgeführt werden darf, bevor er geschlossen und als fehlerhaft markiert wird.

300

Wartezeit (Minuten)

Die Mindestdauer der Prozessausführung, bevor eine Analyse auf blockierte SPIDs in Betracht gezogen wird.

1

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.DBEngine.BlockedSPIDs
RemotableTrue
AccessibilityPublic
Alert Message
Blockierte Sitzung(en)
Die Sitzung(en) {0} in SQL-Instanz "{1}" auf Computer "{2}" ist/sind blockiert. Ausführliche Informationen finden Sie auf der Registerkarte "Warnungskontext".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.DBEngine.BlockedSPIDsMonitor" Accessibility="Public" Enabled="false" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.DBEngine.BlockedSPIDs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.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>