Die Regel löst einen Fehler aus, wenn kein COMMIT einer internen MS DTC-Transaktion ausgeführt werden kann.
Microsoft Distributed Transaction Coordinators (MS DTCs) können bei Transaktionsteilnehmern wie COM+-Komponenten oder SQL Server-Instanzen als Teil des Zweiphasencommit-Protokolls (2PC) per PREPARE-Anweisung die Vorbereitung anfordern. Wenn SQL Server COMMIT-Bereitschaft signalisiert, können die MS DTCs aus unterschiedlichen Gründen ein per ABORT-Anweisung einen Abbruch anfordern; dieser Fehler wird auf dem Server angezeigt, von dem der COMMIT ausgegeben wurde. Wenn SQL Server die Transaktionsanforderung initiiert und anderen Teilnehmern eine PREPARE-Anweisung sendet, in der Zwischenzeit jedoch mindestens einer dieser Teilnehmer jedoch eine ABORT-Anweisung ausgegeben hat, wird dieser Fehler von dem Server ausgegeben, der die Anforderung initiiert hat.
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 aufgrund der 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 der Onlinedokumentation in den Themen zum MS DTC-Dienst, zu verteilten Transaktionen, zur Architektur verteilter Transaktionen, zum Konfigurieren verknüpfter Server und zur Funktionsweise sofortiger Aktualisierungen.
Name | Beschreibung | Standardwert |
Aktiviert | Aktiviert oder deaktiviert den Workflow. | Ja |
Intervall (Sekunden) | Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an. | 300 |
Priorität | Definiert die Warnungspriorität. | 1 |
Schweregrad | Definiert den Warnungsschweregrad. | 1 |
Synchronisierungszeit | Synchronisierungszeit |
|
Timeout (Sekunden) | Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird. | 200 |
Timeout für Datenbankverbindung (Sekunden) | Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann. | 15 |
Target | Microsoft.SQLServer.Windows.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Comment | Mom2017ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8520</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>