Compartir a través de


Administración de conexiones y sesiones (XMLA)

Estado es una condición durante la cual el servidor conserva la identidad y el contexto de un cliente entre llamadas de método. La falta de estado es una condición durante la cual el servidor no recuerda la identidad y el contexto de un cliente después de que finalice una llamada al método.

Para proporcionar estado, XML for Analysis (XMLA) admite sesiones que permiten realizar una serie de instrucciones juntas. Un ejemplo de esta serie de instrucciones sería la creación de un miembro calculado que se va a usar en consultas posteriores.

En general, las sesiones de XMLA siguen el siguiente comportamiento descrito por la especificación OLE DB 2.6:

  • Las sesiones definen el ámbito de contexto de transacción y comando.

  • Se pueden ejecutar varios comandos en el contexto de una sola sesión.

  • La compatibilidad con transacciones en el contexto XMLA es a través de comandos específicos del proveedor enviados con el método Execute .

XMLA define una manera de admitir sesiones en un entorno web en un modo similar al enfoque utilizado por el protocolo Distributed Authoring and Versioning (DAV) para implementar el bloqueo en un entorno acoplado flexiblemente. Esta implementación en paralelo daV en que el proveedor puede expirar las sesiones por diversos motivos (por ejemplo, un tiempo de espera o un error de conexión). Cuando se admiten sesiones, los servicios web deben tener en cuenta y estar listos para controlar conjuntos de comandos interrumpidos que se deben reiniciar.

La especificación del Protocolo de acceso a objetos simple (SOAP) del World Wide Web Consortium (W3C) recomienda usar encabezados SOAP para crear nuevos protocolos sobre los mensajes SOAP. En la tabla siguiente se enumeran los atributos y elementos de encabezado SOAP que XMLA define para iniciar, mantener y cerrar una sesión.

Encabezado SOAP Descripción
BeginSession Este encabezado solicita al proveedor que cree una nueva sesión. El proveedor debe responder construyendo una nueva sesión y devolviendo el identificador de sesión como parte del encabezado Session en la respuesta SOAP.
Id de sesión El área de valor contiene el identificador de sesión que se debe usar en cada llamada de método para el resto de la sesión. El proveedor de la respuesta SOAP envía esta etiqueta y el cliente también debe enviar este atributo con cada elemento de encabezado Session.
Sesión Para cada llamada de método que se produce en la sesión, se debe usar este encabezado y el identificador de sesión debe incluirse en el área de valor del encabezado.
EndSession Para finalizar la sesión, use este encabezado. El identificador de sesión debe incluirse con el área de valores.

Nota:

Un identificador de sesión no garantiza que una sesión permanezca válida. Si la sesión expira (por ejemplo, si se agota el tiempo de espera o se pierde la conexión), el proveedor puede optar por finalizar y revertir las acciones de esa sesión. Como resultado, todas las llamadas a métodos subsiguientes del cliente en un identificador de sesión producen un error que indica una sesión que no es válida. Un cliente debe controlar esta condición y estar preparado para volver a enviar las llamadas al método de sesión desde el principio.

Ejemplo de código heredado

En el ejemplo siguiente se muestra cómo se admiten las sesiones.

  1. Para comenzar la sesión, agregue un encabezado BeginSession en SOAP a la llamada de método XMLA saliente desde el cliente. El área de valor está inicialmente en blanco porque aún no se conoce el identificador de sesión.

    <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. El mensaje de respuesta SOAP del proveedor incluye el identificador de sesión en el área de encabezado de retorno mediante la etiqueta <de encabezado XMLA SessionId>.

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  3. Para cada llamada de método en la sesión, se debe agregar el encabezado Session, que contiene el identificador de sesión devuelto por el proveedor.

    <SOAP-ENV:Header>  
       <XA:Session  
          xmlns:XA="urn:schemas-microsoft-com:xml-analysis"  
          mustUnderstand="1"  
          SessionId="581"/>  
    </SOAP-ENV:Header>  
    
  4. Una vez completada la sesión, se usa la <etiqueta EndSession> , que contiene el valor del identificador de sesión relacionado.

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

Véase también

Desarrollo con XMLA en Analysis Services