MSSQL en Windows: error al confirmar la transacción MSDTC interna

Microsoft.SQLServer.Windows.EventRule.DBEngine.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule (Rule)

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

Knowledge Base article:

Resumen

El Coordinador de transacciones distribuidas (MS DTC) puede pedir 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.

Resoluciones

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 sobre MS DTC, consulte "MS DTC Service", "Distributed Transactions", "Distributed Transactions Architecture", "Configuring Linked Servers" y "How Immediate Updating Works" en los Libros en pantalla.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

300

Prioridad

Define la prioridad de alerta.

1

Gravedad

Define la gravedad de alerta.

1

Hora de sincronización

Hora de sincronización

 

Tiempo de espera (segundos)

Especifica el tiempo que el flujo de trabajo se puede ejecutar antes de cerrarlo y marcarlo como erróneo.

200

Tiempo de expiración de la conexión de base de datos (segundos)

Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL en Windows: error al confirmar la transacción MSDTC interna
{0}
CommentMom2017ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8520</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>