訊息佇列服務無法從 Active Directory 取得 msmq (MSMQ 設定) 物件的內容
無法在 Active Directory 網域服務 (AD DS) 中建立 MSMQ 設定物件。此錯誤可能是由下列其中一項狀況所造成:
安裝訊息佇列的使用者不具正確的權限,無法在 AD DS 中建立子物件。
未正確設定複寫延遲。
AD DS 中有損毀的電腦物件。
若要執行這些程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
安裝訊息佇列的使用者不具正確的權限,無法在 AD DS 中建立子物件
確認安裝訊息佇列的使用者是網域使用者,且為本機系統管理員安全性群組中的成員:
開啟 [電腦管理] 主控台。若要開啟 [電腦管理],請按一下 [開始]。在搜尋方塊中輸入 compmgmt.msc,然後按下 ENTER。
在主控台樹狀目錄中,展開 [系統工具] 和 [本機使用者和群組],然後按一下 [群組]。
在詳細資料窗格中,按兩下 [系統管理員]。
在 [成員] 區段中,確認該使用者為此群組 (Administrators) 的成員。
如果使用者不是群組的成員,則請參閱<授與適當的權限>一節。
未正確設定複寫延遲
複寫延遲有問題。Active Directory 複寫本身之後,應可解決此問題。複寫完成之後,請嘗試再次建立 Active Directory 物件:
如為小型網路,複寫應該只需要數分鐘的時間。
如為大型網路,複寫可能會需要較長的時間。
進階使用者和網域系統管理員也可以使用知識一致性檢查程式 (KCC) 來設定複寫延遲。如需有關在大型網路中最佳化 Active Directory 複寫的詳細資訊,請參閱 Microsoft 知識庫中的文章 244368 ( http://go.microsoft.com/fwlink/?LinkId=107511)。
AD DS 中有損毀的電腦物件
確認是否有過期的電腦物件:
按一下 [開始],指向 [系統管理工具],以滑鼠右鍵按一下 [Active Directory 使用者和電腦],然後按一下 [以系統管理員身分執行]。
在 [檢視] 功能表中,確定已選取 [將使用者、連絡人、群組和電腦作為容器],且已選取 [進階功能]。
瀏覽至特定電腦。檢查該電腦底下是否有訊息佇列物件。
如果有訊息佇列物件,且該特定電腦並未安裝訊息佇列和 Active Directory 整合,則這些物件已過期。
如果您確定該電腦有過期物件,請執行以下步驟
過期物件可能會導致 MSMQ 服務無法正確運作。刪除過期物件也許可以解決此問題。不過,刪除 Active Directory 網域服務 (AD DS) 中的電腦物件可能會導致用戶端電腦出現問題。刪除電腦物件之前,請確定在用戶端電腦中執行的服務不會受到影響。在此情況下,刪除訊息佇列 Active Directory 物件也會一併刪除該電腦中的公用佇列。
您必須在遠端伺服器管理下的 [角色管理工具] 中安裝 Active Directory 服務工具。
若要執行這些程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
確認 Active Directory 服務工具已安裝
確認 Active Directory 服務工具已安裝:
按一下 [開始],指向 [系統管理工具],以滑鼠右鍵按一下 [Active Directory 使用者和電腦],然後按一下 [以系統管理員身分執行]。
確認下列 Active Directory 工具已顯示於清單中:
Active Directory 網域及信任
Active Directory 站台及服務
Active Directory 使用者和電腦
刪除過期的電腦物件
刪除過期的電腦物件:
按一下 [開始],指向 [系統管理工具],以滑鼠右鍵按一下 [Active Directory 使用者和電腦],然後按一下 [以系統管理員身分執行]。
在 [檢視] 功能表中,確定已選取 [將使用者、連絡人、群組和電腦作為容器],且已選取 [進階功能]。
瀏覽至特定電腦。檢查該電腦底下是否有訊息佇列物件。
如果有訊息佇列物件,且該特定電腦並未安裝訊息佇列和 Active Directory 整合,則此物件已過期。刪除特定的訊息佇列 Active Directory 物件,然後重新啟動 MSMQ 服務,或者視需要重新啟動電腦。
如需詳細資訊,請參閱事件識別碼 2120 ( http://technet.microsoft.com/en-us/library/dd337481(WS.10).aspx)
Target | Microsoft.MSMQ.6.3.Servers | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Event_ID | 2120 | ||
Event Source | $Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.MSMQ.6.3.Rule.Alert.Event2120" Enabled="false" Target="Microsoft.MSMQ.6.3.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>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2120</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.6.3.Rule.Alert.Event2120.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>