快取報表 (SSRS)
報表伺服器可以快取已處理報表的副本,並在使用者開啟報表時還原該副本。 對使用者而言,能夠指出報表是快取副本的唯一證據是報表執行的日期和時間。 如果日期或時間不是目前的日期和時間,且報表不是快照集,則報表是從快取擷取而來。
如果報表很大或存取頻繁,快取就可以縮短擷取報表所需的時間。 如果伺服器重新開機,所有快取的執行個體都會在報表伺服器 Web 服務再次上線時恢復。
快取是一種效能增強技術。 快取的內容為動態,而且會隨報表加入、取代或移除而變更。 如果您需要更可預測的快取策略,就應該建立報表快照集。 如需詳細資訊,請參閱設定報表處理内容。
注意
Reporting Services 會將暫存檔案儲存於資料庫中,以支援使用者工作階段與報表處理。 這些檔案會快取供內部使用,以及在單一瀏覽器工作階段期間支援一致的檢視體驗。 如需如何快取內部使用暫存檔案的詳細資訊,請參閱報表伺服器資料庫 (SSRS 原生模式) (部分機器翻譯)。
快取執行個體
報表的快取執行個體是以報表的中繼格式為基礎。 報表伺服器一般會以報表名稱為基礎,快取一個報表的執行個體。 不過,如果報表依據查詢參數而包含不同的資料,則在任何給定時間可能會快取多種版本的報表。 例如,假設您有一個將區域代碼當成參數值的參數化報表。 如果 4 個不同的使用者指定了 4 個唯一的區域代碼,就會建立 4 個快取副本。
第一個以唯一的區域代碼執行報表的使用者,會建立一個包含該區域資料的快取報表。 使用相同區域代碼要求報表的後續使用者會取得快取副本。
並非所有報表都可以快取。 如果報表包含使用者相依的資料、提示使用者輸入認證或使用 Windows 驗證,則無法快取。
重新整理快取
如果使用者在先前的快取副本過期後選取報表,快取報表就會以較新版本取代。 設定當成快取執行個體執行的報表,會依據逾期設定,定期從快取移除。 您可以設定報表以分鐘為單位的逾期或在排程的時間逾期,這由資料的直接需求決定。 除非使用 SOAP API,否則無法直接從快取刪除報表。
若要設定快取逾期,可以使用共用排程或報表特定排程。 如果您使用共用排程而且後來排程暫停,則當排程無法作業時,快取不會過期。 如果共用排程後來被刪除,則排程設定的副本會儲存為報表特定排程。
如果排程到期,或排程引擎在快取到期日無法使用,則報表伺服器會執行實時報表。 此動作會繼續執行,直到排程的作業可以繼續為止。 當您擴充排程或啟動排程服務時,可以繼續排程的作業。
預先載入快取
若要提升伺服器效能,您可以預先載入快取。 您可以使用兩種方式,預先載入包含參數化報表執行個體集合的快取:
建立快取重新整理計畫。 當您建立重新整理計畫時,可以指定單一報表的排程,或指定共用排程。
建立使用 Null 傳遞提供者的資料驅動訂閱。 您指定 Null 傳遞提供者做為訂閱中傳遞的方法時,報表伺服器會以報表伺服器資料庫做為傳遞目的地目標。 伺服器會使用稱為 Null 轉譯延伸模組的特製化轉譯延伸模組。 相較於其他傳遞延伸模組,Null 傳遞提供者並沒有您可以透過訂閱定義來設定的傳遞設定。
如果您要快取參數化報表的多個執行個體,其中使用不同的參數值來產生不同的報表執行個體,快取報表特別有用。 您只能在報表上指定查詢式參數。
當您指定排程或建立資料驅動訂閱時,必須排程報表傳遞至快取的頻率。 舊副本需要已經過期,新副本才能傳遞至快取。 因此,必須設定報表的執行屬性,以包含快取逾期設定。 逾期設定必須與您定義的訂閱排程一致。 例如,您若是建立一個每晚執行的訂閱,則快取也必須在每天晚上訂閱的執行階段之前過期。 如果執行内容未包含逾期時間,則會略過較新的傳遞。 如需快取重新整理計劃的詳細資訊,請參閱 排程。 如需設定内容的詳細資訊,請參閱設定報表處理内容。 如需使用資料驅動訂閱的詳細資訊,請參閱資料驅動訂閱。
造成快取逾期的條件
快取報表會因回應下列事件而無效:已修改報表定義、已修改報表參數、資料來源認證變更,或報表執行選項變更。 如果您刪除儲存在快取中的報表,也會刪除快取的版本。
如果因為任何原因而無法從快取執行個體轉譯報表,報表伺服器就會重新執行報表。 此動作可確保會以正確的且已更新的參數值產生報表。