MSSQL 2016: Service Broker 队列回滚处理程序中出错

Microsoft.SQLServer.2016.An_error_occurred_in_the_Service_Broker_queue_rollback_handler_5_Rule (Rule)

当某个错误阻止 Service Broker 在回滚期间禁用队列时,SQL Server Service Broker 将产生 MSSQLSERVER 事件 ID 8405。

Knowledge Base article:

摘要

当某个错误阻止 Service Broker 在回滚期间禁用队列时,SQL Server Service Broker 将产生 MSSQLSERVER 事件 ID 8405。

原因

阻止 Service Broker 禁用队列的错误在 Windows 应用程序日志中注册为 MSSQLSERVER 事件 ID 8405。

解决方法

检查 Windows 应用程序日志。查找 MSSQLSERVER 事件 ID 8405,确定阻止 Service Broker 在回滚期间禁用队列的错误。Windows 应用程序日志中指定的错误是此错误的根本原因。修复根本原因,然后重新启动应用程序。

外部

请参阅 SQL Server 2016 联机丛书中的“处理有害消息”。

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流。

优先级

定义警报优先级。

1

严重性

定义警报严重性。

2

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8405
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Service Broker 队列回滚处理程序中出错
{0}
Event LogApplication
CommentMom2016ID='{AE10A975-0731-4479-A665-1CF81FE3985D}';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.An_error_occurred_in_the_Service_Broker_queue_rollback_handler_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{AE10A975-0731-4479-A665-1CF81FE3985D}';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>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8405</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<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>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.An_error_occurred_in_the_Service_Broker_queue_rollback_handler_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>