MSSQL unter Windows: Fehler beim Wiederherstellen der Datenbank. Es konnte keine Verbindung mit MSDTC hergestellt werden, um den Abschlussstatus der Transaktion zu überprüfen.

Microsoft.SQLServer.Windows.EventRule.DBEngine.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule (Rule)

Wenn Sie MS DTC zum Verwalten einer verteilten Transaktion über mehrere Server verwenden und es dabei zu einer Verbindungsunterbrechung kommt, ist der Status der verteilten Transaktion anschließend unbekannt oder zweifelhaft. Zu den häufig auftretenden Ursachen für Unterbrechungen gehören Folgende:

Knowledge Base article:

Zusammenfassung

Wenn Sie MS DTC zum Verwalten einer verteilten Transaktion über mehrere Server verwenden und es dabei zu einer Verbindungsunterbrechung kommt, ist der Status der verteilten Transaktion anschließend unbekannt oder zweifelhaft. Zu den häufig auftretenden Ursachen für Unterbrechungen gehören Folgende:

auf einem oder mehreren Computern, die an der verteilten Transaktion beteiligt sind. Wenn die Verbindung unterbrochen wurde, hinterlässt MS DTC alle Transaktionen, die zu diesem Zeitpunkt durchgeführt werden, in einem inkonsistenten Status. Die als zweifelhaft gekennzeichneten Transaktionen verursachen diese Symptome, da SQL Server nicht ermitteln kann, ob für die Transaktionen ein Commit oder ein Rollback ausgeführt werden soll, und MS DTC muss SQL Server mitteilen, wie zu verfahren ist.

Lösungen

Zum Auflösen inkonsistenter verteilter Transaktionen gibt es mehrere unterschiedliche Verfahren:

So verwenden Sie die MS DTC-Verwaltungskonsole:

. Geben Sie mmc.exe im Dialogfeld "Ausführen" ein, um Microsoft Management Console (MMC) zu öffnen.

. Klicken Sie im MMC-Konsolenmenü auf "Snap-In hinzufügen/entfernen".

. Klicken Sie im Dialogfeld "Snap-In hinzufügen/entfernen" auf "Hinzufügen".

. Klicken Sie im Dialogfeld "Eigenständiges Snap-In hinzufügen" auf "Komponentendienste", und klicken Sie auf "Hinzufügen", um das Snap-In hinzuzufügen.

. Klicken auf 'Schließen'

. Klicken Sie im Dialogfeld "Snap-In hinzufügen/entfernen" auf "OK".

. Erweitern Sie im Konsolenstamm unter "Komponentendienste" den Eintrag "Komponentendienste", zeigen Sie auf "Computer" und dann auf "Arbeitsplatz", und klicken Sie anschließend auf "Distributed Transaction Coordinator".

. Wählen Sie "Transaktionsliste" aus. Im Detailfenster werden Transaktionen angezeigt. Klicken Sie mit der rechten Maustaste auf die Transaktion, und klicken Sie dann auf "Auflösen". Sie können nun zwischen drei Optionen auswählen: "Commit", "Abbrechen" oder "Verwerfen". Wählen Sie die Option, die für Ihre Situation geeignet ist.

Überschreibbare Parameter

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 an, wie lange der Workflow ausgeführt werden kann, 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

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL unter Windows: Fehler beim Wiederherstellen der Datenbank. Es konnte keine Verbindung mit MSDTC hergestellt werden, um den Abschlussstatus der Transaktion zu überprüfen.
{0}
CommentMom2017ID='{6B1C776D-E075-4F73-B9C0-66CEF9024905}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{6B1C776D-E075-4F73-B9C0-66CEF9024905}';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>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>3437</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.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>