超文本傳輸通訊協定 (HTTP) 是無連線和無狀態通訊協定,這表示它不會自動指出不同的要求是否來自相同的用戶端,或甚至單一瀏覽器實例是否仍在主動檢視頁面或網站。 會話會建立邏輯連線,以透過 HTTP 維護伺服器與客戶端之間的狀態。 與特定會話相關的使用者特定資訊稱為會話狀態。
會話管理牽涉到將 HTTP 要求與相同會話所產生的其他先前要求相互關聯。 如果沒有會話管理,這些要求似乎與報表伺服器 Web 服務無關,因為 HTTP 通訊協定的無連線和無狀態本質。
Reporting Services 不會公開會話狀態的整體概念,例如由 ASP.NET 公開。 不過,在執行報表時,報表伺服器會以 執行的形式維護方法呼叫之間的狀態。 執行可讓使用者以數種方式與報表互動,包括從報表伺服器載入報表、設定報表的認證和參數,以及轉譯報表。
在與報表伺服器通訊時,用戶端會使用執行來管理報表檢視和使用者流覽至報表中的其他頁面,以及顯示或隱藏報表的區段。 用戶端應用程式執行的每個報表都有唯一的執行。
一般而言,當使用者瀏覽至瀏覽器或用戶端應用程式,並選取要檢視的報表時,執行存留期就會開始。 在收到最後一個執行要求之後,執行會在短暫的逾時期間後捨棄(預設逾時為 20 分鐘)。
從 Web 服務的觀點來看,呼叫報表伺服器 Web 服務 LoadReport、 LoadReportDefinition或 Render 方法時,存留期就會啟動。 應用程式可以使用其他方法來作作用中的執行(例如,設定參數和設定數據源)。 在收到最後一個執行要求之後,執行會在短暫的逾時期間後捨棄(預設逾時為 20 分鐘)。
應用程式會藉由儲存 ExecutionID在 SOAP 標頭中從 LoadReport 和 LoadReportDefinition 方法傳回的 ,來追蹤 Web 服務和RenderRenderStream方法呼叫之間的多個作用中執行。
下圖顯示報表的處理和轉譯路徑。
為了支援上述函式,目前的SOAP Render方法已分割成多個方法,包括執行初始化、處理和轉譯階段。
若要以程序設計方式轉譯報表,您必須:
使用 LoadReport 或 LoadReportDefinition載入報表或報表定義。
檢查報表是否需要認證或參數,方法是檢查 CredentialsRequired 或所LoadReport傳回物件的 和 ParametersRequired 屬性值ExecutionInfoLoadReportDefinition
如有必要,請使用 SetExecutionCredentials 和 SetExecutionParameters 方法來設定認證和/或參數。
Render呼叫 方法來轉譯報表。
當報表在會話中時,儲存在報表伺服器資料庫中的基礎報表可能會變更。 例如,報表定義可以變更、可以刪除或移動報表,而且使用者可以變更許可權。 如果報表位於使用中會話中,則不會受到基礎報表所做的變更影響(也就是儲存在報表伺服器資料庫中的報表)。
您也可以使用 URL 存取命令來管理報表工作階段。