Diese Regel löst einen Fehler aus, wenn der COMMIT einer internen MSDTC-Transaktion fehlschlägt
MS DTC (Microsoft Distributed Transaction Coordinator) kann bei Transaktionsteilnehmern wie COM+-Komponenten oder einen bzw. mehrere SQL Server-Instanzen die VORBEREITUNG als Teil des Zweiphasencommit (2PC)-Protokolls anfordern. Wenn SQL Server COMMIT-Bereitschaft signalisiert, können die MS DTCs aus unterschiedlichen Gründen ein ABBRECHEN anfordern; dieser Fehler wird auf dem Server angezeigt, von dem der COMMIT ausgegeben wurde. Wenn entsprechend SQL SERVER die Transaktionsanforderung initiiert und bei anderen Teilnehmern ein VORBEREITEN angefordert hat, mindestens einer dieser Teilnehmer in der Zwischenzeit jedoch ein ABBRECHEN angefordert hat, so wird von dem die Anforderung initiierenden Server dieser Fehler ausgegeben.
Diese Meldung ist ein Hinweis auf normale Zweiphasencommit-Aktivität. Wenn Sie nicht sicher sind, welche Anwendung oder SQL Server-Abfrage MS DTC aufruft, können Sie eine SQL Profiler-Ablaufverfolgung verwenden, um aufzuzeichnen, welcher Befehl abgebrochen wurde.
Beispiele für Gründe für die Anforderung des ABORT:
Bei der Transaktion ist basierend auf den Timeouteinstellungen der Anwendung ein Timeout aufgetreten.
Möglicherweise hat ein anderer an der Transaktion teilnehmender Ressourcen-Manager den ABORT angefordert.
MS DTC wurde möglicherweise während der Transaktion heruntergefahren.
Der genaue, als Teil der Meldung zurückgegebene Ergebniscode variiert, und eine Suche nach diesem Ergebniscode ergibt möglicherweise mehr Details zur eigentlichen Ursache.
Weitere Informationen zu MS DTC finden Sie in den Themen zum MS DTC-Dienst, zu verteilten Transaktionen, zur Architektur verteilter Transaktionen, zum Konfigurieren verknüpfter Server und zur Funktionsweise sofortiger Aktualisierungen in der Onlinedokumentation.
Name | Beschreibung | Standardwert |
Aktiviert |
| Ja |
Generiert Warnungen |
| Ja |
Priorität |
| 1 |
Schweregrad |
| 1 |
Target | Microsoft.SQLServer.2014.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 8520 | ||
Event Source | $Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2014ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2014GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2014.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2014ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2014GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8520</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2014.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>