無法叫用規則定義的動作。
診斷
訊息佇列觸發程序規則的引動過程可能會因為多種原因而失敗。此錯誤可能是由下列其中一項狀況所造成:
規則的條件或動作參數無效。
規則所叫用的元件物件模型 (COM) 物件未正確註冊。
找不到規則中指定的可執行檔或其沒有作用。
若要執行這些程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
規則的條件或動作參數無效
判斷規則的條件或動作參數的有效性:
開啟電腦管理嵌入式管理單元。若要開啟 [電腦管理],請按一下 [開始]。在搜尋方塊中輸入 compmgmt.msc,然後按下 ENTER。
在主控台樹狀目錄中,依序展開 [服務與應用程式]、[訊息佇列] 和 [觸發程序]。
在 [訊息佇列觸發程序] 下方按一下 [觸發程序]。
以滑鼠右鍵按一下您要執行的規則以查看其內容。
按一下 [一般] 索引標籤。確認規則指向所需的佇列且處理類型正確無誤。
按一下 [連結規則] 索引標籤,然後確認連結規則如您所需。
在 [觸發程序] 下方按一下 [規則] 以顯示可用規則的清單。
以滑鼠右鍵按一下應透過觸發程序執行的規則,然後檢視其內容。
在 [規則條件] 索引標籤中,確認規則條件如您所需。
在 [規則動作] 索引標籤中,確認規則指向所需的動作。
如果您判斷規則的條件或參數為問題所在,請參閱<設定規則或觸發程序>一節。
規則所叫用的 COM 物件未正確註冊
判斷 COM 物件是否已正確註冊:
開啟 [元件服務] 嵌入式管理單元。若要開啟 [元件服務],請依序按一下 [開始] 和 [執行]。在 [開啟] 方塊中,輸入 comexp.msc,然後按 ENTER。
在主控台樹狀目錄中,依序展開 [元件服務]、[電腦] 和 [我的電腦],然後按一下 [COM+ 應用程式]。
確認您的 COM 元件存在且已註冊。
如果判斷 COM 物件未正確註冊,請參閱<註冊 COM+ 元件>一節。
找不到規則中指定的可執行檔或其沒有作用
判斷可執行檔是否存在且有作用:
開啟 [Windows 檔案總管],然後瀏覽至事件中指定的可執行檔。確認該檔案存在且可正確執行。
判斷規則中是否有正確參照可執行檔。開啟電腦管理嵌入式管理單元。若要開啟 [電腦管理],請按一下 [開始]。在搜尋方塊中輸入 comexp.msc,然後按下 ENTER。
在主控台樹狀目錄中,依序展開 [電腦管理]、[服務與應用程式]、[訊息佇列]、[觸發程序] 和 [規則],然後按一下 [規則]。
以滑鼠右鍵按一下錯誤訊息中指定的規則,然後按一下 [內容]。
在 [規則動作] 索引標籤中的 [啟動獨立可執行檔] 下方,確認可執行檔路徑中列出的可執行檔存在且接在其完整路徑的後面。例如,您看到的應該是 c:\MyDirectory\MyApp.exe,而不只是 MyApp.exe。
如果您判斷可執行檔存在問題,請參閱<刪除並重新建立規則>一節。
如需有關建立觸發程序規則的詳細資訊,請參閱「建立規則並將其附加到觸發程序中」( http://go.microsoft.com/fwlink/?LinkId=104059)。
設定規則或觸發程序
規則條件或觸發程序必須正確設定。如果您不清楚所需的規則或觸發程序設定,請連絡您的解決方案架構師。
若要執行此程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
確認並變更規則與觸發程序:
開啟電腦管理嵌入式管理單元。若要開啟 [電腦管理],請按一下 [開始]。在搜尋方塊中輸入 compmgmt.msc,然後按下 ENTER。
展開 [服務與應用程式]、[訊息佇列] 和 [觸發程序]。
在 [訊息佇列觸發程序] 下方按一下 [觸發程序]。
以滑鼠右鍵按一下您要執行的規則,然後按一下 [內容]。
按一下 [一般] 索引標籤。確認規則指向所需的佇列且處理類型正確無誤。
按一下 [連結規則] 索引標籤,然後確認連結規則如您所需。
在 [觸發程序] 下方按一下 [規則] 以顯示可用規則的清單。
以滑鼠右鍵按一下應透過觸發程序執行的規則,然後檢視其內容。
在 [規則條件] 索引標籤中,確認規則條件如您所需。
在 [規則動作] 索引標籤中,確認規則指向所需的動作。
針對每個規則重複執行步驟 7 至 10。
註冊 COM+ 物件
規則所叫用的 COM+ 物件未正確註冊。若要再次註冊物件,您可使用命令列公用程式 regsvr32.exe。如需有關使用 regsvr32 的詳細資訊,請參閱 Microsoft 知識庫中的文章 249873 ( http://go.microsoft.com/fwlink/?LinkId=107513)。
若要執行此程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
註冊 COM+ 物件:
執行 regsvr32.exe。若要執行 regsvr32.exe,請按一下 [開始]。在搜尋方塊中輸入 cmd,然後按 ENTER。
在命令提示字元下,輸入 regsvr32 <your COM+ component.dll>,然後按 ENTER。
刪除並重新建立規則
找不到規則中指定的可執行檔或其沒有作用。若要解決此問題,請嘗試刪除並重新建立指定的規則。
若要執行此程序,您必須具備 Administrators 的成員資格,或者必須已被委派適當的權限。
刪除並重新建立指定的規則:
開啟電腦管理嵌入式管理單元。若要開啟 [電腦管理],請按一下 [開始]。在搜尋方塊中輸入 compmgmt.msc,然後按下 ENTER。
在主控台樹狀目錄中,依序展開 [電腦管理]、[服務與應用程式]、[訊息佇列]、[觸發程序] 和 [規則],然後按一下 [規則]。
選取錯誤訊息中指定的規則,然後對其按兩下。
確認提供規則中可執行檔的完整路徑。
如需有關建立觸發程序規則的詳細資訊,請參閱「建立規則並將其附加到觸發程序中」( http://go.microsoft.com/fwlink/?LinkId=104059)。
如需詳細資訊,請參閱事件識別碼 2209 ( http://technet.microsoft.com/en-us/library/dd337501(WS.10).aspx)
Target | Microsoft.MSMQ.6.3.Triggers | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Event_ID | 2209 | ||
Event Source | $Target/Host/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 |
Alert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.MSMQ.6.3.Rule.Alert.Event2209" Enabled="false" Target="Microsoft.MSMQ.6.3.Triggers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">2209</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.6.3.Rule.Alert.Event2209.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
</WriteActions>
</Rule>