共用方式為


管理連線和工作階段 (XMLA)

具狀態 是伺服器在方法呼叫之間保留用戶端身分識別和內容的條件。 無狀態 是一種條件,在方法呼叫完成之後,伺服器不會記住用戶端的身分識別和內容。

為了提供具狀態性,XML for Analysis (XMLA) 支援允許一系列語句一起執行的 會話 。 這類語句的範例是建立要用於後續查詢的導出成員。

一般而言,XMLA 中的會話遵循 OLE DB 2.6 規格概述的下列行為:

  • 會話會定義交易和命令內容範圍。

  • 您可以在單一工作階段的內容中執行多個命令。

  • XMLA 內容中的交易支援是透過使用 Execute 方法傳送的提供者特定命令。

XMLA 會定義一種方法,以類似分散式撰寫和版本設定 (DAV) 通訊協定所使用的方法,在鬆散結合的環境中實作鎖定的模式中的 Web 環境中支援會話。 此實作會平行處理 DAV,讓提供者因為各種原因而讓會話過期(例如逾時或連線錯誤)。 支援會話時,Web 服務必須注意並準備好處理必須重新啟動的中斷命令集。

萬維網聯合會 (W3C) 簡單物件存取通訊協定 (SOAP) 規格建議使用 SOAP 標頭,在 SOAP 訊息之上建立新的通訊協定。 下表列出 XMLA 為起始、維護及關閉工作階段所定義的 SOAP 標頭元素和屬性。

SOAP 標頭 說明
BeginSession 此標頭會要求提供者建立新的工作階段。 提供者應該藉由建構新的會話並傳回會話標識碼,作為SOAP回應中會話標頭的一部分來回應。
SessionId(會話識別碼) 值區域包含會話標識碼,這些標識碼必須用於會話其餘部分的每個方法呼叫中。 SOAP 回應中的提供者會傳送這個標記,客戶端也必須使用每個 Session 標頭元素傳送這個屬性。
會期 對於會話中發生的每個方法呼叫,必須使用此標頭,而且會話標識碼必須包含在標頭的值區域中。
EndSession 若要終止會話,請使用此標頭。 會話標識碼必須隨附於值區域。

備註

會話標識碼不保證會話保持有效。 如果會話過期(例如,如果逾時或連線遺失),提供者可以選擇結束並回復該會話的動作。 因此,會話標識碼上用戶端的所有後續方法呼叫都會失敗,並出現錯誤,表示會話無效。 客戶端應該處理此條件,並準備好從頭重新傳送會話方法呼叫。

舊版程式代碼範例

下列範例示範如何支援會話。

  1. 若要開始會話,請將SOAP中的BeginSession標頭新增至客戶端的輸出 XMLA 方法呼叫。 值區域一開始為空白,因為會話標識碼還不清楚。

    <SOAP-ENV:Envelope  
       xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"  
       SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">  
       <SOAP-ENV:Header>  
          <XA:BeginSession  
             xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
             xsi:type="xsd:int"  
             mustUnderstand="1"/>  
       </SOAP-ENV:Header>  
       <SOAP-ENV:Body>  
          ...<!-- Discover or Execute call goes here.-->  
       </SOAP-ENV:Body>  
    </SOAP-ENV:Envelope>  
    
  2. 來自提供者的 SOAP 回應消息會使用 XMLA 標頭標記 <SessionId>,在傳回標頭區域中包含會話識別碼。

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  3. 針對會話中的每個方法呼叫,必須新增會話標頭,其中包含從提供者傳回的會話標識符。

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          mustUnderstand="1"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  4. 當會話完成時, <會使用 EndSession> 標記,其中包含相關的會話標識碼。

    <SOAP-ENV:Header>  
       <XA:EndSession  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          xsi:type="xsd:int"  
          mustUnderstand="1"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    

另請參閱

在 Analysis Services 中使用 XMLA 進行開發