The Message Queuing service cannot start due to internal private queue problem.

Microsoft.MSMQ.2003.Rule.Alert.Event2020 (Rule)

Knowledge Base article:

Summary

The Message Queuing service cannot start due to internal private queue problem.

Configuration

To backup and restore Message Queuing messages using a command line

mqbkup {-b folderpath | -r folderpath | -c msmq_resource_name | -?}

where:

-b folderpath backs up the files to the specified folder,

-r folderpath restores the files from the specified folder,

-c msmq_resource_name specify the name of the clustered msmq resource

-? displays help for the utility.

Causes

This problem can be caused because a file in the MSMQ\Storage\LQS directory is corrupted. This directory contains the definitions of all private queues in the machine.

Resolutions

Restore MSMQ

Membership in the local Users group, or equivalent, is the minimum required to complete this procedure.

To restore MSMQ you must have performed at some point a backup of the MSMQ.

Before restoring messages, you must close Control Panel and all Message Queuing applications or any application that holds open a registry key handle to the HKLM\Software\MSMQ\Parameters registry key. Such applications typically include the Computer Management console if the Message Queuing snap-in is loaded, the MSMQ trigger service, the Message Queuing service, and some third party applications.

At the command prompt, type the following, and then press ENTER.

mqbkup {-b folderpath | -r folderpath | -c msmq_resource_name | -?}

Element properties:

TargetMicrosoft.MSMQ.2003.Server
CategoryAvailabilityHealth
EnabledFalse
Event_ID2020
Event Source$Target/Property[Type="MSMQ!Microsoft.MSMQ.ServerRole"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
The Message Queuing service cannot start due to internal private queue problem.
{0}
Event LogApplication

Member Modules:

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

Source Code:

<Rule ID="Microsoft.MSMQ.2003.Rule.Alert.Event2020" Enabled="false" Target="Microsoft.MSMQ.2003.Server" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</Category>
<DataSources>
<DataSource ID="DS" 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="MSMQ!Microsoft.MSMQ.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2020</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.2003.Rule.Alert.Event2020.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>