Microsoft Distributed Transaction Coordinator (MS DTC) può chiedere ai partecipanti di una transazione, ad esempio ai componenti COM+ o a una o più istanze di SQL Server, di eseguire un'istruzione PREPARE come parte del protocollo 2PC. Se SQL Server risponde che è pronto per eseguire un'istruzione COMMIT, ma MS DTC chiede un'istruzione ABORT per un motivo qualsiasi, sul server che ha eseguito l'istruzione COMMIT viene visualizzato questo errore. Analogamente, se SQL Server ha avviato la richiesta di transazione e ha chiesto a un altro partecipante di eseguire un'istruzione PREPARE, ma nel frattempo uno dei partecipanti ha richiesto un'istruzione ABORT, sul server che ha avviato la richiesta verrà 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 MS DTC, è possibile usare 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 risultato esatto restituito nel messaggio varia e una ricerca del codice può fornire altri 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".
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Priorità | Definisce la priorità dell'avviso. | 1 |
Gravità | Definisce la gravità dell'avviso. | 1 |
Target | Microsoft.SQLServer.2012.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 | Mom2012ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2012GroupID={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.2012.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';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>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.2012.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>