目录
2、XMLA概念(基本来自联机手册,介绍一些概念,如果熟悉概念可以略过)
3、XMLA配置(针对各个版本的SSAS、IIS的配置说明)
4、XMLA over TCP/IP(说明一下为什么SSAS内置的XMLA over TCP/IP在开发时行不通)
5、 XML for Analysis(XMLA)开发详解-(5)XMLA请求的格式及实例示意
本文将不断根据情况更新(最近更新请通过http://www.jbean.cn获取)。
XMLA请求的数据结构
XMLA请求由多层封包组成,总体结构如下图所示,可对照MSDN了解详情(http://technet.microsoft.com/zh-cn/library/ms186656.aspx):
其中,HTML封包是SOAP所依赖的传输协议,与XMLA之间相隔了SOAP一层,因此HTML封包与XMLA没有任何逻辑关系(实事上如本系列第四篇所述,微软自用的传输协议是TCP/IP之,还进一步的对SOAP封包进行了压缩及加密)。
SOAP封包与XMLA相邻,并被XMLA用来寄存维护会话的SESSION标头命令(四个命令)。没有指定SESSION标头的每一个命令都是一个独立的短暂会话,对于客户端保持原子化的事务特性。
XMLA方法的组成及结构
在XMLA介绍一节我们知道XMLA具有两种方法,分别是Discover、Execute。
其中,Discover方法用于从 SSAS服务器及指定多维数据库实例检索结构性的信息,包括获取服务器的多维数据库Cube列表、Catalog、DataSource、Dimensions、Levels等。DisCover方法的结构如下:
<Discover>
<RequestType>...</RequestType>
<Restrictions>...</Restrictions>
<Properties>...</Properties>
</Discover>
Execute方法则携带Command参数,从指定的多维数据集获取查询数据。最常用Command是执行MDX语句查询的Statement命令(<Statement>MDX Query Clause</Statement>):
<Execute>
<Command>...</Command>
<Properties>...</Properties>
<Parameters>...</Parameters>
</Execute>
XMLA SOAP请求实例(已去掉HTTP封包)
下表是一个完整的获取数据源列表的XMLA Discover请求,表的第一列各行分割了XMLA封包的各部分,第二列对应行说明了各部分的含义。
<?xml version="1.0" encoding="UTF-8"?> | soap表头 |
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis" | XMLA方法 |
</SOAP-ENV:Body> | soap |
需要特别注意的是XMLA访问SSAS 2000/2005/2008时存在着细微差异,高版本的SSAS对SOAP封包的属性要求更加严格,而在低版本中却可以做适当忽略。因此,如果在低版本的SSAS下可以运行的XMLA程序在高版本下无法获取结果的话,应该仔细查阅文档并跟踪比较,看看是否由于这个原因导致。
关于返回结果
如果知道完成特定任务的请求序列,关于结果的描述信息可以通过查找MSDN或XMLA SPEC可以轻松的获取。 因此,本系列不打算对XMLA的返回结果进行描述。