MS DTC (Microsoft Distributed Transaction Coordinator) peut demander aux participants des transactions, comme les composants COM+ ou une ou plusieurs instances SQL Server, d'exécuter PREPARE dans le cadre du protocole de validation en deux phases. Si SQL Server répond qu'il est prêt à exécuter COMMIT mais que MS DTC demande d'exécuter ABORT pour une certaine raison parmi plusieurs, cette erreur apparaît sur le serveur qui a émis l'instruction COMMIT. De même, si SQL Server a émis la demande de transaction et demandé à un autre participant d'exécuter PREPARE, mais qu'entre-temps un des participants a demandé un ABORT, le serveur qui a émis la demande signale cette erreur.
Ce message indique une activité de validation normale en deux phases. Si vous ne savez pas avec certitude quelle application ou requête SQL Server appelle MS DTC, vous pouvez utiliser une trace du Générateur de profils SQL pour capturer la commande qui a été abandonnée.
Exemples des motifs de demande de l'instruction ABORT :
Délai d'attente de la transaction basé sur les paramètres de délai de l'application.
Un autre gestionnaire de ressources participant à la transaction peut avoir demandé ABORT.
MS DTC a peut-être été arrêté au cours de la transaction.
Le code de résultat exact retourné dans le message varie. Une recherche sur ce code peut fournir des détails supplémentaires sur la cause initiale.
Pour plus d'informations sur MS DTC, consultez « Service MS DTC », « Transactions distribuées », « Architecture des transactions distribuées », « Configuration des serveurs liés » et « Fonctionnement de la mise à jour immédiate » dans la documentation en ligne.
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 |
Target | Microsoft.SQLServer.2008.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 | Mom2008ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2008GroupID={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.2008.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2008GroupID={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.2008.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>