分享方式:


Reporting Services 中的排程

Reporting Services 提供「共用排程」和「報表特定排程」來協助您控制報表的處理和散發。 這兩種排程類型之間的差異是定義、儲存和管理它們的方式。 兩種排程類型的內部建構則相同。 所有排程都會指定一個循環類型:每月、每週或每日。 在循環類型內,您可以設定發生事件之頻率的間隔和範圍。 不論您是建立共用排程還是報表特定排程,定期模式的類型和指定這些模式的方式相同。

  • 共用排程會建立為個別項目。 建立之後,您可以在定義訂閱或其他已排程的作業時參考它們。

  • 當您定義訂閱或設定報表執行屬性時,會建立報表特定排程。 填寫排程資訊是定義訂用帳戶或設定屬性的一部分。 若要定義報表特定排程,請您開啟使用它的報表或訂閱。

共用排程包含在 Reporting Services 報表伺服器上執行的任何數量之已發佈報表和訂閱可使用的排程與定期資訊。 如果您擁有許多同時執行的報表和訂閱,就可以針對這些作業建立共用排程。 如果您之後想要變更定期模式或結束日期,可以在單一位置進行變更。

共用排程的維護方式比較簡單,而且在管理排程作業方面提供更大的彈性。 例如,您可以暫停並繼續共用排程。 可能有太多排程作業同時執行。 如果這些作業確實同時執行,您可以建立在不同時間執行的多個共用排程。 然後,調整排程資訊,直到整個報表伺服器的處理負載平衡為止。

可以使用排程達成的事項

您可以在原生模式下使用 Reporting Services Web 入口網站和 SQL Server Management Studio,以及在 SharePoint 模式下使用 SharePoint 網站管理頁面,以建立和管理您的排程。 您可以:

  • 以標準訂閱或資料驅動訂閱的方式,排程報表的傳遞。

  • 排程報表記錄,好讓新的快照集能夠在固定的週期加入至報表記錄中。

  • 排程何時重新整理報表快照集的資料。

  • 排程何時重新整理共用資料集的資料

  • 排程在預先定義的時間讓快取報表或共用資料集過期,以便重新整理。

如果您想要針對許多報表或訂閱使用相同的排程資訊,可以建立共用排程。 共用排程是分開定義的,然後再從需要排程資訊的報表、共用資料集與訂閱中參考。

當您建立排程時,報表會將排程資訊儲存在報表伺服器資料庫中;如果是 SharePoint 模式,則會儲存在服務應用程式資料庫中。 報表伺服器也會建立用來觸發排程的 SQL Server Agent 工作。 排程的處理會依據包含該排程之報表伺服器的本地時間。 時間格式遵循 Microsoft Windows 作業系統標準。

如需如何建立及管理排程的詳細資訊,請參閱建立、修改,以及刪除排程

注意

並非所有 SQL Server 版本都提供排程作業。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2022 的版本和支援功能

比較共用與報表特定排程

這兩種排程類型會產生相同的輸出:

  • 共用排程 是多用途的可攜式項目,包含立即可用的排程資訊。 因為共用排程是系統層級項目,所以建立共用排程需要系統層級權限。 基於這個原因,報表伺服器管理員或內容管理員一般會在您的報表伺服器上建立可以使用的共用排程。 共用排程是在報表伺服器上,使用入口網站或 SharePoint 網站設定來儲存及管理。

    與您透過報表、共用資料集或訂閱屬性定義的特定排程相較之下,共用排程比較容易管理和維護,原因如下:

    • 您可以從中央位置管理共用排程。 如果排程作業的執行間隔過短或與伺服器上的其他處理程序發生衝突,中央位置讓您可以更輕鬆比較排程屬性和調整頻率與定期模式。

    • 它們可讓您快速適應運算環境的變更。 例如,假設您有一組報表,而這些報表會在重新整理資料倉儲之後,於 4:00 A.M. 執行。 如果資料重新整理作業重新排程或延遲,您就可以透過更新單一共用排程中的排程資訊,輕易地配合該項變更。

    • 如果您只有使用共用排程,就可以精確地知道進行排程作業的時間。 這項知識能在發生效能問題之前,讓您更容易地預期和配合伺服器負載。 例如,如果您決定要以特定時間排程電腦備份,就可以調整共用排程,以便於不同的時間執行。

  • 報表特定排程 會定義在個別報表、訂閱或報表執行作業的內容中,用以決定快取過期或快照集更新。 當您定義訂閱或設定報表執行屬性時,會以內嵌的方式建立這些排程。 若共用排程未提供您需要的頻率或定期模式,您可以建立報表特定排程。 若要防止報表執行,可手動編輯報表特定排程。 個別使用者可以建立報表特定排程。

設定資料來源

先將報表資料來源設定成使用預存認證或自動報表處理帳戶,才能排程報表的資料或訂閱處理。 如果您使用預存認證,則只能儲存一組認證,而且該組認證將會由所有執行報表的使用者使用。 預存認證可以是 Windows 使用者帳戶或資料庫使用者帳戶。

自動報表處理帳戶是在報表伺服器上設定的特殊目的帳戶。 當排程的作業需要擷取外部檔案或處理時,報表伺服器會使用此帳戶來連接遠端電腦。 如果您設定此帳戶,即可用它來連接提供資料給報表的外部資料來源。

若要指定預存認證或自動報表處理帳戶,請編輯報表的資料來源屬性。 如果報表使用共用資料來源,則請改為編輯該共用資料來源。

儲存認證和處理帳戶

您使用排程的方式會視您的角色指派的工作而定。 如果您要使用預先定義的角色,屬於內容管理員和系統管理員的使用者就可以建立和管理任何排程。 如果您使用自訂角色指派,角色指派就必須包括支援排程作業的工作。

若要執行此工作 包括這個工作 原生模式預先定義的角色 SharePoint 模式群組
建立、修改或刪除共用排程 管理共用排程 系統管理員 擁有者
選取共用排程 檢視共用排程 系統使用者 成員
建立、修改或刪除使用者自訂訂閱中的報表特定排程 管理個別訂閱 瀏覽器、報表產生器、我的報表和內容管理員 訪客、成員
建立、修改或刪除所有其他已排程之作業的報表特定排程 管理報表記錄、管理所有訂閱、管理報表 內容管理員 擁有者

如需原生模式中 Reporting Services 安全性的詳細資訊,請參閱角色定義 - 預先定義的角色在原生模式報表伺服器上授與權限工作和權限。 如需有關 SharePoint 模式的詳細資訊,請參閱 Reporting Services 角色工作與 SharePoint 群組權限

排程與傳遞處理的運作方式

排程與傳遞處理器提供下列功能:

  • 在報表伺服器資料庫中維護事件與通知的佇列。 在向外延展部署中,會在部署中的所有報表伺服器間共用佇列。

  • 呼叫報表處理器以執行報表、處理訂閱或清除快取報表。 因為排程事件而發生的所有報表處理都會當做都會當做背景處理來執行。

  • 呼叫在訂閱中指定的傳遞延伸模組,以便可以傳遞報表。

使用「排程與傳遞處理器」的其他元件和服務會處理排程和傳遞作業的其他層面。 明確地說,「排程與傳遞處理器」會在報表伺服器服務中執行,並使用 SQL Server Agent 做為計時器來產生排程的事件。 下列逐步描述會說明排程的作業如何在 Reporting Services 部署中運作:

  1. 當使用者建立排程時,會定義排程的作業。 排程會定義將用於觸發報表傳遞之訂閱、重新整理快照集,或是讓快取到期的日期和時間。

  2. 報表伺服器會將排程資訊儲存在報表伺服器資料庫中。

  3. 報表伺服器會在包含所提供之排程資訊的 SQL Server Agent 中,建立對應的工作。 系統會使用與報表伺服器資料庫之間的現有開放連線,透過預存程序建立工作。

  4. SQL Server Agent 會在排程中指定的日期和時間執行作業, 而此作業會建立一個事件,該事件會加入到由 Reporting Services 所維護的佇列中。

  5. 事件導致報表或訂閱程序執行。 在佇列中偵測到事件時會加以處理,而且會相對應地處理或傳遞報表。

    處理事件前,排程與傳遞處理器會執行驗證步驟,以確認訂閱擁有者具有檢視報表的權限。

Reporting Services 會針對所有排程的作業維護事件佇列, 也會定期輪詢此佇列,以檢查是否有新的事件。 根據預設,每隔 10 秒鐘會掃描一次佇列。 您可以變更此間隔,其方式是在 RSReportServer.config 檔中修改 PollingIntervalIsNotificationServiceIsEventService 組態設定。 SharePoint 模式也會將 RSreporserver.config 用於這些設定,而且這些值會套用到所有 Reporting Services 服務應用程式。 如需詳細資訊,請參閱 RsReportServer.config 組態檔

伺服器相依性

排程與傳遞處理器需要啟動報表伺服器服務與 SQL Server Agent。 排程與傳遞處理功能必須透過原則型管理中 [Reporting Services 的介面區設定] Facet 的 ScheduleEventsAndReportDeliveryEnabled 屬性來啟用。 SQL Server Agent 與報表伺服器服務都必須執行,排程的作業才會發生。

注意

您可以使用 [Reporting Services 的介面區組態] Facet,暫時或永久地停止排程的作業。 您可以建立與部署自訂傳遞擴充模組,但排程與傳遞處理器無法藉由本身擴充。 您無法變更它管理事件與通知的方式。 如需有關關閉功能的詳細資訊,請參閱排程的事件和傳遞

停止 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 中的狀態資訊會指出作業成功。 但是,因為報表伺服器服務已停止,因此不會處理報表。 要求將繼續在佇列中累積,直到您重新啟動報表伺服器服務為止。 重新啟動報表伺服器服務之後,佇列中的所有報表處理要求都會依照順序處理。