MSSQL 2016: error al confirmar la transacción MSDTC interna

Microsoft.SQLServer.2016.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule (Rule)

La regla genera un error si no se puede confirmar la transacción MSDTC interna

Knowledge Base article:

Resumen

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 emitió la instrucción COMMIT. De igual forma, si SQL Server inició la solicitud de transacción y pidió a otro participante que emitiera la instrucción PREPARE pero, mientras tanto, cualquiera de los participantes solicitó una instrucción ABORT, el servidor que inició la solicitud notificará este error.

Soluciones

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 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:

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 acerca de 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.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

Prioridad

Define la prioridad de la alerta.

1

Gravedad

Define la gravedad de la alerta.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8520
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: error al confirmar la transacción MSDTC interna
{0}
Event LogApplication
CommentMom2016ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2016GroupID={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">
<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="SQL2016Core!Microsoft.SQLServer.2016.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.2016.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>