Правило срабатывает, когда SQL Server не может внести в список новую или существующую распределенную транзакцию.
Это сообщение появляется, когда SQL Server не удается прикрепить новую или существующую транзакцию MSDTC (Координатор распределенных транзакций Майкрософт).
Для ошибки такого рода существует несколько первоначальных причин. Информация о состоянии ошибки, конкретном результате, возвращаемом с ошибкой, а также о каких-либо других ошибках, которые произошли примерно в то же время, может помочь определить, почему внесение в список не удалось. Ошибка при внесении в список часто является признаком проблемы связи, такой как сбой разрешения имен. Она также может быть результатом того, что вызывающее приложение предназначено или стало результатом блокирования или проблемы с производительностью на стороне SQL Server.
Убедитесь, что служба MS DTC запущена на обоих компьютерах, вовлеченных в данную транзакцию MS DTC. Если служба MS DTC является кластеризованной, то с помощью программы "Администратор кластера" проверьте, работает ли она в режиме "в сети".
Проверьте наличие в журналах событий серверов, вовлеченных в данную транзакцию MS DTC, чтобы выяснить наличие других ошибок, возникших одновременно с данным сообщением. Если есть другие ошибки, то сначала устраните их, так как данная ошибка часто является следствием других ошибок.
По умолчанию сетевой доступ для MS DTC в Windows Server 2003 отключен. Если какой-либо из компьютеров работает под управлением Windows 2003, убедитесь, что MS DTC включен.
Проверьте, правильно ли выполняется обмен RPC между вовлеченными серверами.
Перезагрузите серверы, вовлеченные в данную транзакцию MS DTC, чтобы очистить все сведения об IP-адресах.
Проверьте, чтобы время ожидания транзакции для вызывающего компонента COM+ было настроено достаточно большим для предотвращения тайм-аута из-за попытки отдельного компонента вовлечь в работу транзакцию, время ожидания которой уже истекло.
Если параметр конфигурации SQL Server "использование упрощенных пулов" (также известен как "режим волокон") включен, отключите его. Проверьте, продолжает ли появляться данная ошибка.
Если параметр конфигурации SQL Server "повышение приоритета" включен, отключите его. Проверьте, продолжает ли появляться данная ошибка.
См. статью базы знаний Майкрософт 307802, чтобы узнать, насколько точно используемая среда соответствует описываемой в статье. При точном соответствии проверьте изменение одного из факторов среды, чтобы узнать, не прекратилось ли появление данного сообщения. Если сообщение перестает появляться, когда текущая среда больше не соответствует описанию статьи, то это сообщение можно пропустить без последствий.
Название | Описание | Значение по умолчанию |
Включено | Включает или отключает рабочий процесс. | Да |
Приоритет | Определяет приоритет предупреждения. | 1 |
Серьезность | Определяет серьезность предупреждения. | 1 |
Target | Microsoft.SQLServer.2016.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 8510 | ||
Event Source | $Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2016ID='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2016.Enlist_of_MSDTC_transaction_failed_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{7F714A4C-B7CF-4665-B1B5-4D7A3E0613D0}';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>8510</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.Enlist_of_MSDTC_transaction_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>