Microsoft DTC (Coordinador de transacciones distribuidas) puede solicitar a los participantes en una transacción, por ejemplo, a los componentes COM+ o a una o varias instancias de SQL Server que emitan la instrucción PREPARE como parte del protocolo de confirmación en dos fases (2PC). Si SQL Server responde que está preparado para la instrucción COMMIT, pero MS DTC solicita una instrucción ABORT por cualquiera de una serie de motivos, este error aparece en el servidor que ha emitido la instrucción COMMIT. De igual forma, si SQL Server ha iniciado la solicitud de transacción y ha pedido a otro participante que emitiera la instrucción PREPARE pero, mientras tanto, cualquiera de los participantes ha solicitado una instrucción ABORT, el servidor que ha iniciado la solicitud notificará este error.
Este mensaje indica actividades normales de confirmación en dos fases. Si no está seguro de qué aplicación o consulta de SQL Server está llamando a MS DTC, puede usar un archivo de seguimiento de SQL Server Profiler para capturar el comando anulado.
Algunos ejemplos de motivos por los que se podría solicitar la instrucción ABORT son:
La transacción superó el tiempo de espera establecido en la configuración de la aplicación.
Otro administrador de recursos que participa en la transacción ha podido solicitar la instrucción ABORT.
Puede que se haya cerrado MS DTC durante la transacción.
El código de resultado exacto devuelto como parte del mensaje varía y una búsqueda de este código puede proporcionar más detalles sobre la causa inicial.
Para obtener más información acerca de MS DTC, vea los temas sobre el servicio MS DTC, las transacciones distribuidas, la arquitectura de las transacciones distribuidas, la configuración de servidores vinculados y la actualización inmediata de trabajos en los Libros en pantalla.
Nombre | Descripción | Valor predeterminado |
Habilitado | Habilita o deshabilita el flujo de trabajo. | Sí |
Prioridad | Define la prioridad de la alerta. | 1 |
Gravedad | Define la gravedad de la alerta. | 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>