共用方式為


指定傳遞通訊協定執行設定

當您設定一個傳遞通訊協定時,可以定義多個設定傳遞重試、失敗和逾時處理的執行設定。本主題將解說如何指定這些傳遞通訊協定執行設定。

重試通知傳遞

當通知無法傳遞時,散發者可以再試著將通知傳遞一次。您可以為通知類別所用的每一個傳遞通訊協定,設定一個重試排程。

重試邏輯是套用在散發者端工作項目層級。如果工作項目中有任何通知無法傳遞,散發者工作項目本身便被視為失敗。散發者可以根據指定的排程,稍後再將散發者工作項目重新傳遞一次。

當散發者重試一個工作項目時,只有在前一次傳遞作業無法傳遞的通知,才會重傳一次。不過,如果發生錯誤,讓散發者無法更新通知的傳遞狀態時,散發者可以再重新傳遞一次,而且可能會在下次重試時,重新傳送重複的通知。

您在設定重試排程時,會指定一或多個重試延遲值。如果通知無法傳遞,散發者便會等著再次收取該工作項目,直到到達第一個重試延遲值所指定的間隔時間為止。如果無法再次傳遞通知,散發者便會等候第二次重試延遲,再將它傳遞一次。這個處理序會繼續進行,直到所有的重試延遲值都用完,或者直到未傳遞的通知到期為止,看看哪一種情況先發生。

ms171406.note(zh-tw,SQL.90).gif附註:
您要在每個通知類別 (而非每個傳遞通訊協定) 各指定一個到期時間。如需詳細資訊,請參閱<指定通知過期保留天數>。

範例

下表將告訴您,散發者如何以三個重試延遲值,重新傳遞通知。

初始傳遞嘗試

1:00

第一次重試延遲 = 15 分鐘

1:15

第二次重試延遲 = 30 分鐘

1:45

第三次重試延遲 = 60 分鐘

2:45

重試延遲值不會影響散發者的引發排程。這些值代表最小延遲值;兩次傳遞之間的實際延遲時間可能會更長。

如果因為您的伺服器經驗不足而拉長了停擺時間,即使散發者未再重試一次,所花的重試延遲間隔時間也可能會超過一次以上。此時散發者會立即針對那些當伺服器回到線上時尚未到期的散發者工作項目再重試一次。然後再恢復重試延遲排程,等到 下次重試間隔所指定的間隔時間時,再重試一次。

若要指定重試排程

記錄傳遞失敗

散發者將項目寫到 Windows 應用程式記錄檔中,記錄通知傳遞失敗。您可以設定散發者何時及如何記錄每一個傳遞通訊協定的傳遞傳失敗事件。

ms171406.note(zh-tw,SQL.90).gif重要事項:
Notification Services 會從外部傳遞系統接收有限的錯誤回應。大部份的失敗,都會在事件記錄中產生一個一般「傳遞失敗」錯誤。常態性的傳遞失敗,可能代表組態問題。若要驗證傳遞組態,請檢閱執行個體組態中的傳遞通道設定,以及應用程式定義中的通訊協定欄位值。

您可以設定的第一個屬性,是必須先發生幾次失敗,散發者才會在應用程式記錄檔中記錄一個事件。您可以設定的第二個屬性,是記錄事件之間的最小間隔 (無論發生幾次失敗都一樣)。這兩個設定都可讓您控制散發者寫了幾個事件到應用程式記錄檔中,並且萬一在短時間內發生好幾個失敗時,還不致讓應用程式記錄檔滿溢。

例如,如果失敗次數被設為 5,間隔設為 10 分鐘,那麼必須發生 5 次失敗之後,散發者才會記錄一個錯誤。過了 10 分鐘之後,失敗計數會再重新計算。再經過 5 次失敗之後,散發者會再寫另一個事件到應用程式記錄檔中。

在開發應用程式時,您可能會希望採用一個失敗以及零分鐘作為預設值。不過,在產生應用程式時,可以考慮使用較高的值,在需要失敗資訊以及希望儘量降低過多記錄這兩種情況之間求得平衡。

ms171406.note(zh-tw,SQL.90).gif附註:
NSDiagnosticDeliveryChannel (Transact-SQL)NSDiagnosticFailedNotifications (Transact-SQL) 預存程序可以幫助您排解傳遞失敗的疑難。

若要設定要發生幾次傳遞失敗才記錄一個事件

  • 如果您是透過 XML來定義應用程式,請在 FailuresBeforeLoggingEvent Element (ADF) 中,定義要發生幾次傳遞失敗才會記錄一個事件。
  • 如果您是以程式設計的方式來定義應用程式,請先定義傳遞失敗的次數,再利用 FailuresBeforeEventLog 屬性 (NMO) 來記錄事件。

若要設定記錄之間的間隔

在連續失敗之後停止傳遞

如果是因為網路斷線時間延長 (而非因為暫時性的網路狀況) 而使傳遞失敗,散發者可以在工作項目內停止傳遞,以防止網路爆滿。

您可以指定在一個工作項目內必須連續發生幾次傳遞失敗之後,散發者才能針對該工作項目的通知,取消其他傳遞動作。一旦達到限制,散發者就會撰寫一則訊息給應用程式記錄檔,將該工作項目標示為已失敗。此時工作項目內可能還有一些通知從未發出。如果有重試排程,散發者會在下一個重試間隔收取該工作項目,並且重試失敗的通知以及從未發出的通知。

若要設定在停止傳遞之前的連續失敗次數

限制多重傳遞收件者

對於每個傳遞通訊協定來說,您也可以限制可接收單一多重傳遞的訂閱者數目。如需有關多重傳遞的詳細資訊,請參閱<指定多重傳遞的摘要>。

當您限制多重傳遞收件者的數目時,散發者會在達到限制時,停止在多重傳遞收件者清單中加入訂閱者。接著散發者會另外建立一份新的清單,將訂閱者加入這份新清單中,直到到達限制為止。這個處理序會繼續進行到工作項目中所有的多重傳遞通知都加入多重傳遞收件者清單中為止。

ms171406.note(zh-tw,SQL.90).gif重要事項:
多重傳遞設定不能用在 SQL Server 2005 Standard Edition。

若要設定多重傳遞收件者限制

設定工作項目逾時

當散發者收取一個工作項目時,它會呼叫內容格式器,將通知格式化;以及呼叫傳遞通訊協定,來封裝和傳遞通知。如果工作項目很大,或者如果因為某種原因而使散發作業受到封鎖,該工作項目可以耗用散發者的一個執行緒,來延遲處理其他通知。

如果您指定傳遞通訊協定的工作項目逾時,散發者會在過了指定時間之後,釋出該工作項目。如果傳遞通訊協定具有重試排程,散發者會將工作項目標示為已失敗,並且再次收取該工作項目。

若要設定工作項目逾時

  • 如果您是透過 XML 來定義應用程式,請在 WorkItemTimeout Element (ADF) 中,定義工作項目逾時值。
  • 如果您是以程式設計的方式定義應用程式,請利用 WorkItemTimeout 屬性 (NMO),定義工作項目逾時值。

請參閱

概念

設定散發者記錄

其他資源

Notification Services 預存程序 (Transact-SQL)
設定傳遞通訊協定
定義通知類別
定義 Notification Services 應用程式

說明及資訊

取得 SQL Server 2005 協助