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.
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.
Si è verificato il timeout della transazione in base alle impostazioni di timeout dell'applicazione.
Un altro gestore delle risorse che partecipa alla transazione ha richiesto ABORT.
MSDTC è stato arrestato durante la transazione.
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".
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>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>