zoukankan      html  css  js  c++  java
  • SSAS: 再谈谈如何控制会话(Session)及其销毁

    理解会话对于理解SSAS的编程比较重要。从名字上说,Session还可以称为Dialog,或者Convensation等等。它们都表示这样一个意思:

    1. 它们需要预先建立

    2. 一旦建立之后,那么在这个会话上可以进行多个操作,而且这些操作都可以共享一些会话级别的资源,例如变量值等等

    3. 它们需要关闭,或者被自动回收

    SSAS的会话是由服务器控制的,通常情况下,它的最小空闲时间是45分钟(2700秒),也就是说如果一个会话空闲了45分钟,那么它可能(只是可能)被回收。

    为什么说只是可能呢?服务器并不一定会马上回收空闲的会话,这取决于另外一个参数(最大空闲时间),以及服务器内存是不是紧张了。

    同样道理,而即便是你明确地发出了终止Session的指令,也不见得立即会回收。这仍然是取决于服务器的策略。不过,我们是建议使用完之后明确地关闭会话的,这样至少在我们程序的角度来说是一个好的设计。

    在SSAS中,使用BeginSession的指令开始一个会话,这个会话会回复一个SessionID。然后,后续操作都可以使用这个SessionID指定与该会话的关联。在使用完之后,可以使用EndSession指令结束会话。

    下面是一个BeginSession

    image

    它的回复大致是下面这样的,

    image

    这一段东西是编码过的,解开来之后,我们一般那可以看到一个SessionID

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header>

    <Session xmlns="urn:schemas-microsoft-com:xml-analysis" SessionId=“FF949531-EDA7-4AC4-8B50-17E0335085AC"/>

    </soap:Header><soap:Body><ExecuteResponse xmlns="urn:schemas-microsoft-com:xml-analysis"><return><root xmlns="urn:schemas-microsoft-com:xml-analysis:empty"/></return></ExecuteResponse></soap:Body></soap:Envelope>

     

    然后,我们再来看一下建立会话之后,后续操作应该怎么做。每个操作的头部都会带有一个Session的头,里面包含了指定的SessionID

    image

    最后,我们来看一下如何结束会话

    image

    这是它的工作原理。大家应该掌握。

    那么,对于ADOMDConnection的属性SessionID属性,我们应该怎么样理解呢?

    • 如果没有指定该属性,而当connection成功调用了open方法之后,会自动地将最新的SessionID赋予该属性
    • 如果在调用open之前指定了该属性,那么将尝试连接到指定会话,如果会话不存在或者已经终止,则抛出异常(这里要注意捕获异常)
    • 当调用Connection的Close方法 ,会自动地终止会话

    也就是说,可以在一个连接没有关闭之前,进行多个操作,这些操作可以共享一些会话级别的资源,例如:计算成员,集等等

    这里先预先提一下,有关SSAS对象的一些级别(后续有专门的文章介绍)

    • 全局级别(global):在任何会话中都可见,例如维度成员,命名集,以及通过BIDS创建的计算成员,操作等等
    • 会话级别(Session):在单一会话中可见,一般都通过CREATE SESSION … 这样的语句来创建的,例如CREATE SESSION SET….这是创建一个会话级别的集。
    • 查询级别(Query):在单一查询中可见,一般通过WITH语句来定义,例如WITH SET。。。
    本文由作者:陈希章 于 2009/6/26 18:08:16 发布在:http://www.cnblogs.com/chenxizhang/
    本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心
  • 相关阅读:
    JSP学习笔记
    Java之String、StringBuffer、StringBuilder的区别
    Android开发笔记——Handler总结
    深搜_八皇后(HDU_2553)
    广搜_优先队列和记录搜索路径(HDU_1026)
    深搜_素数环(HDU_1016)
    深搜_奇偶减枝(HDU_1010)
    转载 ASP.NET MVC学习之(5):Html.ActionLink
    启动万维网发布服务(W3SVC)
    What is POID
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1511870.html
Copyright © 2011-2022 走看看