Commit della transazione MSDTC interna non riuscito

Microsoft.SQLServer.2008.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule (Rule)

Knowledge Base article:

Riepilogo

Microsoft Distributed Transaction Coordinator (MSDTC) può richiedere PREPARE ai partecipanti di una transazione, quali componenti COM+ o una o più istanze di SQL Server, nell'ambito del protocollo commit in due fasi (2PC). Se SQL Server risponde che è pronto per COMMIT, ma MSDTC richiede ABORT per qualsiasi ragione, sul server che ha emesso COMMIT viene visualizzato questo errore. In modo simile, se SQL Server ha avviato la richiesta di transazione e ha richiesto PREPARE a un altro partecipante, ma nel frattempo uno dei partecipanti ha richiesto ABORT, sul server che ha avviato la richiesta viene visualizzato questo errore.

Soluzioni

Questo messaggio indica una normale attività di commit in due fasi. Per determinare da quale applicazione o query SQL Server viene eseguita la chiamata a MSDTC, è possibile utilizzare una traccia di SQL Profiler per acquisire il comando interrotto.

Alcuni dei motivi per cui può essere richiesto ABORT sono riportati di seguito.

Il codice esatto restituito nel messaggio varia. Una ricerca del codice può fornire ulteriori dettagli sulla causa radice del problema.

Per ulteriori informazioni su MSDTC, vedere gli argomenti della documentazione online "Servizio MSDTC", "Transazioni distribuite", "Architettura delle transazioni distribuite", "Configurazione di server collegati" e "Aggiornamento immediato".

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8520
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Commit della transazione MSDTC interna non riuscito
{0}
Event LogApplication
CommentMom2008ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2008GroupID={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.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>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>