Microsoft Distributed Transaction Coordinator (MS DTC) kann Transaktionsteilnehmer, z. B. COM+-Komponenten oder eine oder mehrere SQL Server-Instanzen, auffordern, als Teil des Zweiphasencommit-Protokolls (Two-Phase Commit, 2PC) einen PREPARE auszuführen. Wenn SQL Server zum Ausführen eines COMMIT bereit ist, MS DTCs jedoch aus verschiedenen Gründen zu einem ABORT auffordern, wird dieser Fehler auf dem Server angezeigt, der den COMMIT ausgegeben hat. Wenn SQL Server die Transaktionsanforderung initiiert und einen anderen Teilnehmer zu einem PREPARE aufgefordert hat, in der Zwischenzeit jedoch einer der Teilnehmer einen ABORT angefordert hat, meldet der Server, der die Anforderung initiiert hat, ebenfalls diesen Fehler.
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 | Aktiviert oder deaktiviert den Workflow. | Ja |
Priorität | Definiert die Warnungspriorität. | 1 |
Schweregrad | Definiert den Warnungsschweregrad. | 1 |
Target | Microsoft.SQLServer.2012.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 8520 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2012ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2012GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Microsoft.SQLServer.SQLDefaultAccount |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2012.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2012GroupID={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" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<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="SQL!Microsoft.SQLServer.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.2012.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>