Не удалось зафиксировать внутреннюю транзакцию MS DTC

Microsoft.SQLServer.2008.Commit_of_internal_MSDTC_transaction_failed_1_5_Rule (Rule)

Knowledge Base article:

Сводка

Координатор распределенных транзакций Майкрософт (MS DTC) может потребовать от участников транзакции, таких как компоненты COM+ или один или несколько экземпляров SQL Server, подготовиться (инструкция PREPARE) в рамках протокола двухфазной фиксации (2PC). Если SQL Server сообщает о готовности выполнить инструкцию COMMIT, но MS DTC по какой-либо причине запрашивает применение инструкции ABORT, то эта ошибка возникает на сервере, выполнившем инструкцию COMMIT. Аналогично, если сервер SQL Server инициировал запрос транзакции и предложил другому участнику выполнить инструкцию PREPARE, но любой другой участник запросил инструкцию ABORT, инициировавший данный запрос сервер сообщит об этой ошибке.

Решения

Это сообщение указывает на обычную операцию двухфазной фиксации. Если вы не уверены в том, какое приложение или запрос SQL Server вызывают MS DTC, то можете определить команду, выполнение которой было прервано, с помощью трассировки приложения SQL Profiler.

Ниже приведены несколько причин запроса инструкции ABORT.

Точный код результата для данного сообщения может различаться, а поиск по коду результата может предоставить дополнительные сведения об первопричине ошибки.

Дополнительные сведения о MS DTC см. в разделах "Служба MS DTC", "Распределенные транзакции", "Архитектура распределенных транзакций", "Конфигурирование связанных серверов" и "Описание процесса немедленного обновления" электронной документации.

Переопределяемые параметры

Имя

Описание

Значение по умолчанию

Вкл.

Включает или отключает рабочий процесс.

Да

Приоритет

Определяет приоритет предупреждения.

1

Серьезность

Определяет серьезность предупреждения.

1

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8520
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Не удалось зафиксировать внутреннюю транзакцию MS DTC
{0}
Event LogApplication
CommentMom2008ID='{A7060C45-95ED-4D39-9E2B-1DC2866C0AC4}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

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