訊息佇列服務因訊息存放區問題而無法啟動。

Microsoft.MSMQ.10.0.Rule.Alert.Event2023 (Rule)

Knowledge Base article:

摘要

訊息佇列服務因訊息存放區問題而無法啟動。

設定

使用命令列備份和還原訊息佇列訊息

在命令提示字元輸入下列命令,然後按下 ENTER:

mqbkup {-bfolderpath | -rfolderpath| -?} [-y] [-cmsmq_resource_name]

 

描述

-bfolderpath

將檔案備份到指定的資料夾

-rfolderpath

從指定的資料夾還原檔案

-y

不要提示 (所有問題均選取 [是])

-cmsmq_resource_name

MSMQ 設定為叢集資源時使用,指定 MSMQ 叢集資源名稱

-?

顯示公用程式說明

原因

訊息存放區導致訊息佇列服務出現問題。

解決方法

還原訊息之前,您必須關閉 [控制台] 和所有訊息佇列應用程式或在 HKLM\Software\MSMQ\Parameters 登錄機碼保有開啟登錄機碼控制代碼的任何應用程式。一般而言,此類應用程式包含電腦管理主控台 (如果已載入訊息佇列嵌入式管理單元)、MSMQ 觸發程序、訊息佇列服務,以及部分協力廠商應用程式。

附註:在 Windows XP 和較新版本的作業系統中關閉控制台不會有問題,因為這些 Windows 版本不包含 MSMQ 控制台擴充功能。

其他考量

Mqbkup 公用程式無法用於備份或還原儲存在 Active Directory 網域服務中的物件。也就是說,Mqbkup 公用程式無法備份或還原公用佇列,因為公用佇列是 Active Directory 網域服務中的物件。Mqbkup 公用程式可備份或還原儲存在由公用佇列參照的本機電腦中的所有訊息佇列訊息,但是公用佇列本身如需備份或還原,則必須獨立於 Mqbkup 公用程式進行。

此公用程式可備份可復原的交易訊息,包括位於傳出佇列中的訊息。但不會備份或還原快速訊息。

使用此公用程式無法備份憑證和密碼編譯金鑰資訊。

在進行還原操作之後,您必須註冊新的使用者憑證。如需有關如何註冊憑證的詳細資訊,請參閱其他參考資訊。

此公用程式可停止和重新啟動訊息佇列服務,這樣會導致快速訊息遺失。如需有關快速訊息的詳細資訊,請參閱其他參考資訊。

如果繫結至觸發程序的規則已經叫用 COM+ 應用程式,則訊息還原作業可能會失敗,並出現「存取被拒」的錯誤訊息。若要解決此問題,請執行下列步驟:

在 Windows Vista® 電腦中,從使用本機系統管理員權限執行的命令提示字元來啟動 mqbkup。

確定使用 MSMQ API 的所有使用者應用程式和服務均已停止。

如果訊息還原作業還是失敗,請等待 10 分鐘後再重試。釋放所有物件之後,COM+ 應用程式可能需要最多 10 分鐘的時間才能從記憶體卸載。

其他

如需詳細資訊,請參閱「備份與還原訊息」( http://technet.microsoft.com/en-us/library/cc771016(WS.10).aspx)。

如需詳細資訊,請參閱「登錄訊息佇列的憑證」( http://technet.microsoft.com/en-us/library/cc753651(WS.10).aspx)。

如需詳細資訊,請參閱「訊息傳遞方式」( http://technet.microsoft.com/en-us/library/cc771721(WS.10).aspx)。

Element properties:

TargetMicrosoft.MSMQ.10.0.Servers
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
訊息佇列服務因訊息存放區問題而無法啟動。
{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.10.0.Rule.Alert.Event2023" Enabled="false" Target="Microsoft.MSMQ.10.0.Servers" 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>EventSourceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="Microsoft.MSMQ.10.0.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2023</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.10.0.Rule.Alert.Event2023.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>