La règle déclenche une alerte quand SQL Server ne peut pas inscrire une transaction distribuée nouvelle ou existante.
Ce message se produit quand SQL Server ne peut pas inscrire une transaction MSDTC (Microsoft Distributed Transaction Coordinator) nouvelle ou existante.
Plusieurs causes racines peuvent expliquer une erreur de ce type. L'état de l'erreur, le code de résultat spécifique retourné avec l'erreur, ainsi que toutes les autres erreurs survenues à peu près en même temps peuvent permettent d'expliquer l'échec de l'inscription. Cet échec est souvent lié à un problème de communication, comme l'échec d'une résolution de nom. Il peut également être dû à la conception de l'application appelante, ou à des blocages ou des problèmes de performances côté SQL Server.
Vérifiez que MS DTC est démarré sur les deux machines impliquées dans la transaction MS DTC. Si le service MS DTC est ordonné en clusters, vérifiez qu'il est en ligne dans l'Administrateur de cluster.
Recherchez dans les journaux d'événements les serveurs impliqués dans la transaction MS DTC pour vérifier si d'autres erreurs se sont produites en même temps que ce message. Dans ce cas, corrigez-les en premier, car cette erreur est souvent un effet secondaire d'autres erreurs.
Par défaut, l'accès réseau à MS DTC est désactivé sur Windows Server 2003. Si un ordinateur impliqué dans la transaction exécute Windows Server 2003, vérifiez que MS DTC est activé.
Vérifiez que les communications RPC entre les serveurs impliqués fonctionnent correctement.
Redémarrez les serveurs impliqués dans la transaction MS DTC pour vider toutes les informations d'adresse IP.
Vérifiez que les paramètres de délai d'expiration de transaction du composant COM+ appelant sont suffisamment longs pour éviter qu'une expiration n'oblige un composant séparé à essayer de s'inscrire sur une transaction déjà expirée
Si vous avez activé l'option de configuration « lightweight pooling » (regroupement léger) de SQL Server (également appelée « mode fibre »), désactivez-la. Vérifiez si l'erreur continue à se produire.
Si vous avez activé l'option de configuration « priority boost » (renforcement de priorité) de SQL Server, désactivez-la. Vérifiez si l'erreur continue à se produire.
Consultez l'article 307802 dans la Base de connaissances Microsoft pour déterminer si votre environnement correspond exactement à l'environnement décrit dans cet article. Si l'environnement est identique, essayez de modifier l'un de ses facteurs pour déterminer si l'erreur continue à se produire. Si l'erreur ne se produit plus dès que l'environnement n'est plus identique à celui décrit dans l'article, vous pouvez ignorer le message en toute sécurité.
Nom | Description | Valeur par défaut |
Activé | Active ou désactive le flux de travail. | Oui |
Intervalle (en secondes) | Intervalle régulier (en secondes) auquel exécuter le flux de travail. | 300 |
Priorité | Définit la priorité de l'alerte. | 1 |
Gravité | Définit la gravité de l'alerte. | 1 |
Heure de synchronisation | Heure de synchronisation |
|
Délai d'expiration (secondes) | Spécifie la durée pendant laquelle le flux de travail est autorisé à s’exécuter avant d’être fermé et marqué comme ayant échoué. | 200 |
Délai d’attente pour la connexion de base de données (secondes) | Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée. | 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='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';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.Enlist_of_MSDTC_transaction_failed_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';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>8510</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.Enlist_of_MSDTC_transaction_failed_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>