Erreur lors de la récupération de la base de données. Impossible de se connecter à MSDTC pour vérifier l'état d'achèvement de la transaction

Microsoft.SQLServer.2012.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule (Rule)

Knowledge Base article:

Résumé

Lorsque vous utilisez MS DTC pour gérer une transaction distribuée sur plusieurs serveurs et qu'une perte de connectivité se produit, la transaction distribuée est laissée dans un état inconnu ou incertain. Les sources d'interruptions courantes comprennent :

sur un ou plusieurs ordinateurs participant à la transaction distribuée. Suite à l’interruption de la connexion, MS DTC laisse toutes les transactions en cours dans un état incohérent. Les transactions incertaines entraînent ces symptômes car SQL Server ne peut déterminer s’il faut valider ou annuler les transactions, et il a besoin que MS DTC lui indique comment procéder.

Pour plus d'informations sur les erreurs 3437 et l'impossibilité de se connecter à DTC lors du démarrage de SQL Server, consultez l'article  306366 de la Base de connaissances Microsoft.

Solutions

Différentes méthodes permettent de résoudre les transactions distribuées incohérentes :

Pour utiliser la console d'administration MS DTC, procédez comme suit :

. Tapez « mmc.exe » (sans guillemets) dans la boîte de dialogue Exécuter pour ouvrir la console MMC (Microsoft Management Console).

. Dans MMC, dans le menu Console, cliquez sur Ajouter/Supprimer un composant logiciel enfichable

. Dans la boîte de dialogue Ajouter/Supprimer un composant logiciel enfichable, cliquez sur Ajouter

. Dans la boîte de dialogue Ajout d'un composant logiciel enfichable autonome, cliquez sur Services de composants, puis sur Ajouter.

. Cliquez sur Fermer

. Dans la boîte de dialogue Ajouter/Supprimer un composant logiciel enfichable, cliquez sur OK

. Développez Services de composants dans la racine de la console, pointez sur Ordinateurs, pointez sur Poste de travail, puis cliquez sur Coordinateur de transactions distribuées

. Sélectionnez Liste de transactions. Les transactions s'affichent dans le volet d'informations. Cliquez avec le bouton droit sur la transaction, puis cliquez sur Résoudre. Vous avez à présent trois options : Valider, Abandonner ou Oublier. Choisissez celle qui convient à votre situation

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Priorité

Définit la priorité de l'alerte.

1

Gravité

Définit la gravité de l'alerte.

1

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID3437
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Erreur lors de la récupération de la base de données. Impossible de se connecter à MSDTC pour vérifier l'état d'achèvement de la transaction
{0}
Event LogApplication
CommentMom2012ID='{6B1C776D-E075-4F73-B9C0-66CEF9024905}';MOM2012GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2012.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{6B1C776D-E075-4F73-B9C0-66CEF9024905}';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>3437</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.Error_recovering_database_._Could_not_connect_to_MSDTC_to_check_the_completion_status_of_transaction_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>