排程與傳遞處理器
Reporting Services 包含一個排程與傳遞處理器元件,可支援排程的作業和驅動傳遞延伸模組,將報表發送至電子郵件收件匣或共用資料夾目的地。
排程與傳遞處理器是一個內部元件,報表伺服器可使用此元件來處理訂閱和報表傳遞,或重新整理快照集或設定快取報表的逾期。如果您要設定伺服器功能或疑難排解訂閱或傳遞問題,您可以使用本主題中的資訊,了解排程處理階段以及服務和技術的相依性。本主題同時說明您可以用於管理事件佇列的組態設定。
排程與傳遞處理器的運作方式
排程與傳遞處理器提供下列功能:
在報表伺服器資料庫中維護事件與通知的佇列。在向外延展部署中,佇列會在部署中的所有報表伺服器間共用。
呼叫報表處理器以執行報表、處理訂閱或清除快取報表。因為排程事件而發生的所有報表處理都會當做都會當做背景處理來執行。
呼叫在訂閱中指定的傳遞延伸模組,以便可以傳遞報表。
排程和傳遞作業的其他層面是由使用「排程與傳遞處理器」的其他元件和服務所處理。明確地說,「排程與傳遞處理器」會在報表伺服器服務中執行,並使用 SQL Server Agent 做為計時器來產生排程的事件。下列逐步描述會說明排程的作業如何在 Reporting Services 部署中運作:
當使用者建立排程時,會定義排程的作業。排程會定義將用於觸發報表傳遞之訂閱、重新整理快照集,或是讓快取到期的日期和時間。
報表伺服器會將排程資訊儲存在報表伺服器資料庫中。
報表伺服器會在包含所提供之排程資訊的 SQL Server Agent 中,建立對應的工作。系統會使用與報表伺服器資料庫之間的現有開啟連接,透過預存程序建立工作。
SQL Server Agent 會在排程中指定的日期和時間執行作業,而此作業會建立一個事件,該事件會加入到由 Reporting Services 所維護的佇列中。
事件導致報表或訂閱程序執行。在佇列中偵測到事件時會加以處理,而且會相對應地處理或傳遞報表。
處理事件前,排程與傳遞處理器會執行驗證步驟,以確認訂閱擁有者具有檢視報表的權限。如需有關訂閱的詳細資訊,請參閱<訂閱處理>。
Reporting Services 會針對所有排程的作業維護事件佇列,也會定期輪詢此佇列,以檢查是否有新的事件。依預設,每隔 10 秒鐘會掃描一次佇列。您可以變更此間隔,其方式是在 RSReportServer.config 檔中修改 PollingInterval、IsNotificationService 和 IsEventService 組態設定。如需詳細資訊,請參閱<RSReportServer 組態檔>。
伺服器相依性
排程與傳遞處理器需要啟動報表伺服器服務與 SQL Server Agent。排程與傳遞處理功能必須透過原則型式管理中 [Reporting Services 的介面區組態] Facet 的 ScheduleEventsAndReportDeliveryEnabled 屬性來啟用。SQL Server Agent 與報表伺服器服務都必須執行,排程的作業才會發生。
[!附註]
您可以使用 [Reporting Services 的介面區組態] Facet,暫時或永久地停止排程的作業。您可以建立與部署自訂傳遞擴充模組,但排程與傳遞處理器無法藉由本身擴充。您無法變更它管理事件與通知的方式。如需有關關閉功能的詳細資訊,請參閱<如何:開啟或關閉 Reporting Services 功能>。
停止 SQL Server Agent 的影響
依預設,排程的報表是使用 SQL Server Agent。如果您停止服務,則除非您透過 FireEvent 方法,利用程式加入處理要求,否則不會有新處理要求加入佇列。您重新啟動服務後,建立報表處理要求的作業就會繼續。報表伺服器不會嘗試重新建立可能在 SQL Server Agent 離線期間所發生的報表處理作業。如果您停止 SQL Server Agent 一個星期,那個星期內所有排程的作業都會遺失。
[!附註]
SQL Server Agent 為 Reporting Services 提供的功能,可以由使用 FireEvent 方法,將排程事件加入佇列的自訂程式碼取代。
停止報表伺服器服務的影響
如果停止報表伺服器服務,SQL Server Agent 會繼續將報表處理要求加入佇列。SQL Server Agent 中的狀態資訊會指出作業成功。但是,因為報表伺服器服務已停止,因此實際上沒有任何報表處理發生。要求將繼續在佇列中累積,直到您重新啟動報表伺服器服務為止。一旦您重新啟動報表伺服器服務之後,佇列中的所有報表處理要求都會依照順序處理。